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'
记得以前看过一篇文章,这样写的:
3、查询条件中使用了不等于操作符(<>、!=)的select语句执行慢
原因:SQL中,不等于操作符会限制索引,引起全表扫描,即使比较的字段上有索引
方法:通过把不等于操作符改成or,可以使用索引,避免全表扫描。例如,把column<>’aaa’,改成 column<’aaa’ or column>’aaa’,就可以使用索引了。
and a.hot_aera<>'1000' 楼主是否可改一下,看性能比较。
对于右模糊查询,即like ‘…%’,是会使用索引的;左模糊like‘%...’无法直接使用索引;
楼主可以自己在查询计划里查看一下评估成本:
http://www.cnblogs.com/downmoon/archive/2010/05/16/1735952.html
看执行计划,然后调整索引吧!
就语句本身感觉没啥问题。
问题大得去了,你为啥where后面的值都是string啊,该是int的就是int啊