一个查询是否存在记录的SQL.如下:
select count(*) from table_A where condition = XXXX;
这是一个全表的检索.如果只是查询是否存在记录是否有更快的办法.
select 1 from table_A where condition = XXXX and rownum =1;
数据量不大的情况下count(*)和下面的SQL查询差别不大.(几毫秒的差别.多数是跟其他因素有关系)
网上的资料很多说的是Oracle.但是应该大部分的数据库都一样.
如果数据量足够庞大.查询次数特别多.比如:1W条的数据在一个100W条的数据库里逐个验证.
上面不同的查询语句能看出明显的效率高低.
count(*)效率较低.
但是也有比较特殊的情况.
当要查询的记录放置在数据库比较底层的位置的时候.
count(*)花费的时间和后一种SQL文的花费时间差不多.
项目中压力测试的时候就遇到一个奇怪的问题.
当用我们的数据跑的时候.3分钟能执行完.客户的数据却要跑几十分钟.
后来调查发现.客户的数据比较旧.似乎是放置在数据库底层的位置.每次查询几乎都要查询完全表数据才能找到.
所以效率大大降低.
只好采用别的方法提高程序的效率.