数据库中怎样查询符合条件的记录是否存在
例如我想知道table1里是否有city='Beijing'的记录,该怎么写查询语句呢?我知道可以写selectcount(*)fromtable1wherecity='...
例如我想知道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还是会扫描整个表,因为它好像还会隐含的根据什么东西来进行排序,然后返回排序后的第一个记录。反正是,像上面那样写,分析结果表明Mysql还是会扫描整个表的。
怎么办?求强人指教啊!说明一句:使用的数据库是Mysql,但是凡是能解决类似问题的方法都好呀! 展开
我知道可以写
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还是会扫描整个表,因为它好像还会隐含的根据什么东西来进行排序,然后返回排序后的第一个记录。反正是,像上面那样写,分析结果表明Mysql还是会扫描整个表的。
怎么办?求强人指教啊!说明一句:使用的数据库是Mysql,但是凡是能解决类似问题的方法都好呀! 展开
5个回答
展开全部
给你city字段建立上索引
CREATE INDEX city_index ON table1(city)
city_index是索引名,table1是表名,city代表给哪个字段建索引
只能如此了,单纯从语句上节约资源好像不太可能实现
CREATE INDEX city_index ON table1(city)
city_index是索引名,table1是表名,city代表给哪个字段建索引
只能如此了,单纯从语句上节约资源好像不太可能实现
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你只想知道有没有可以用select count(1) as [num] from table1 where city='Beijing' 得到num的值..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select top 1 * from table1 where city ='beijing'
不知道这样行不行?????
不过数据量大的时候,最好建立索引!
不知道这样行不行?????
不过数据量大的时候,最好建立索引!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from table1 where city='Beijing' like '%"&keyword&"%'"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询