首页 新闻 会员 周边

这条查询语句怎么优化啊????

0
悬赏园豆:5 [已解决问题] 解决于 2010-05-20 09:03

select top 20 a.hot_level, a.hot_name,b.room_name,b.room_priceq,b.room_pricep,b.room_pricez,b.room_type,b.room_tuijian,b.id,a.hot_number,a.id as hotelid,a.hot_time,a.hot_level,a.hot_pic from LI_hotel a,LI_room b

where a.hot_number like 'hotel%' 

and a.hot_aera<>'1000' 

and a.hot_number=b.room_hotelnumber 

and  b.room_type='0' 

and b.room_tuijian='1'

林雨....的主页 林雨.... | 初学一级 | 园豆:116
提问于:2010-05-16 21:56
< >
分享
最佳答案
0

记得以前看过一篇文章,这样写的:

3、查询条件中使用了不等于操作符(<>、!=)的select语句执行慢
原因:SQL中,不等于操作符会限制索引,引起全表扫描,即使比较的字段上有索引
方法:通过把不等于操作符改成or,可以使用索引,避免全表扫描。例如,把column<>’aaa’,改成 column<’aaa’ or column>’aaa’,就可以使用索引了。

and a.hot_aera<>'1000' 楼主是否可改一下,看性能比较。

对于右模糊查询,即like ‘…%’,是会使用索引的;左模糊like‘%...’无法直接使用索引;

收获园豆:5
Astar | 高人七级 |园豆:40805 | 2010-05-17 08:25
其他回答(3)
0

楼主可以自己在查询计划里查看一下评估成本:
http://www.cnblogs.com/downmoon/archive/2010/05/16/1735952.html

邀月 | 园豆:25475 (高人七级) | 2010-05-16 23:07
0

看执行计划,然后调整索引吧!

就语句本身感觉没啥问题。

阿水 | 园豆:506 (小虾三级) | 2010-05-17 15:13
0

问题大得去了,你为啥where后面的值都是string啊,该是int的就是int啊

Vincent Yang | 园豆:573 (小虾三级) | 2010-05-18 21:40
能说清楚点吗???
支持(0) 反对(0) 林雨.... | 园豆:116 (初学一级) | 2010-05-19 11:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册