sql查询优化

以前读过一片文章,说是使用or会使查询速度变慢,一直没有体会,也无法理解。可是这两天的一个优化,真让我惊呆了。

一个几个百学校的数据统计count(),硬是用了4~6秒,没加索引?加,然而没什么卵用,只要一count,速度马上变4秒以上。

我想到以前看过一篇文章说尽量不用or,难过是因为我这里面仅有的一个or导致的?先不管sql语句是否符合要求,就看看or变成and之后速度如何

结果让我震惊了。那是为什么呢?据说是因为如果有or,查询的时候就会全盘扫描,这个时候就算有索引,也不会用,白白浪费了索引,消耗了时间。

那么,我该怎么解决呢?我就是需要用or,而不是and,and不满足我的业务需求。

我也记得,可以用Union来代替or实现两个结果的并集

时间已经降到1秒钟了。

从4秒以上降到1秒,我已经很满足了

在这里放一个sql优化链接:http://blog.sina.com.cn/s/blog_8fb83eec0101cpg7.html

接下来,做分页。

先看了一篇分页的文章:https://blog.csdn.net/bino/article/details/1722002

这篇文章介绍了三种分页的方式:

通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页)   效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页)    效率最差,但是最为通用  

经作者验证,第一种耗时最短。于是我就采用第一种方法进行分页。但是分页查询和不分页导出对比之后发现,分页查询是不分页查询时间的三倍。于是我对第一种分页方式做了一下调整

采用Id大于多少和小于多少,这种方式只比不分页慢一点点。

是一种最终的分页方案是:Id大于多少,并且Id小于多少

posted on 2018-03-28 11:35  木头人段  阅读(123)  评论(0编辑  收藏  举报

导航