SQL 执行查询记录的速度

一个查询是否存在记录的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分钟能执行完.客户的数据却要跑几十分钟.

 

后来调查发现.客户的数据比较旧.似乎是放置在数据库底层的位置.每次查询几乎都要查询完全表数据才能找到.

 

所以效率大大降低.

 

只好采用别的方法提高程序的效率.

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值