日期:2014-05-16  浏览次数:20776 次

Mysql数据库中怎样快速查询符合条件的记录是否存在
例如我想知道table1里是否有city='Beijing'的记录,该怎么写查询语句呢? 
我知道可以写 
select count(*) from table1 where city='Beijing'然后就可以看到有多少条记录了; 
或者可以写 
select * from table1 where city='Beijing'然后可以通过看返回的记录集是否为空来判断是否存在符合条件的记录。 

可是现在的问题是,这个表会很大,例如几十万条记录甚至更多;city='Beijing'的记录也会有很多。通过上面的方法都会需要扫描整个表来得到结果,开销大,而我仅仅只是想知道是否存在city='Beijing'的记录而已,犯不着搞这样大的开销。 

或者有人会回答这样的: 
select * from table1 where city='Beijing' limit 1 
这样强制让查询只返回一条记录。 
可是这样也不行,Mysql还是会扫描整个表,因为它好像还会隐含的根据什么东西来进行排序,然后返回排序后的第一个记录。反正是,像上面那样写,用explain分析结果表明Mysql还是会扫描整个表的。 

怎么办?求强人指教啊!说明一句:使用的数据库是Mysql,但是凡是能解决类似问题的方法都好呀!

------解决方案--------------------
你给字段city加上索引不就行了。
------解决方案--------------------
所以会指向很多记录,但是你返回的少,就不会进行全表扫描了。