个人日常优化SQL语句的总结笔记
目前 DB 承受 日平均 500W PV 左右的站点,数据文件大小在20G左右,表数据量 在 50 - 500 W 左右
仅供参考:
1 . 查询的数据行分布情况,决定索引是否用得上,如果查询的数据行在数据表中分布均匀,且所占比重较大,能用上索引;反之,用不上索引
2 . select 的字段数目,特别是 长度较大的字段,对 语句的执行时间影响较大
3 . 语句中有 distinct 时,再在 where 语句中限制日期范围的话,反而会影响性能,无 distinct 时,执行情况是一样的
4 . distinct 一般占到总语句开销的 65 %左右
5 . newid 则视结果集而定,结果集越大,newid 所占语句的总开销比例也就越大
6 . group by 归总时,语句开销和Top 无关,所以,尽量少在大表中group by。
7 . group by 的字段越多,开销越大,且这些字段是用不上索引的,但是 where 中的条件是可以用上索引的。但是不可估量的是,用上索引也不一定能减少开销
8 . 非聚集索引,在 order by 中是用不上的
9 . Row_Number 在IO操作上不是十分的出色,但是在占用CPU资源上,却做的非常好。总体上,还是相当不错的,执行时间较短。
10. 在部分情况下,如果 Or 用好,是和 In 的效率一样的
11. 查询条件过多也会影响性能,且较严重
12. 查询中,UserName='ssssss' 的性能往往会比 UserID=123456 的性能要好
13 . 当语句中出现 in(select id from table1) 时,in里面的表达式一定要加top ,比如 select top 10 * from tables where id in(select top 100 id from table2),特别是在 in 里面取出来的数据比较多,外表又很大的情况
14 . 聚集索引一定要建在在表中分布均匀的字段、增减规律的字段上,比如日期,而尽量避免将聚集索引建立在UserID等字段上
15 . 当 where 中有 like 条件匹配时,where 中的非聚集索引就会失效,引起全表扫描,但是聚集索引是可以用到的
16. 如过允许,请将 可能 引起全表扫表的 SQL 语句,加上 未提交读 的事物隔离级别设置,即 no lock
分享到:
相关推荐
本人学习MySQL笔记,常用的数据库操作增删改查等和条件,排序,分页,聚合函数,分组,连接,子查询等高级数据库操作的总结
经典sql语句笔记(sql 关键字)希望对读者有用
SQL语句笔记
我最近在CSDN上学的SQL笔记.如有错误请多多指教.
SQL语句练习笔记/文件
sql语句中的精华,简单明了,易于学习,对于自学者非常有好处,值得去下载看看
day01-sql安装与SQL语句-笔记.zip
gp数据库日常运维sql语句笔记 数据库运维.pdf
sql语句大全
自己整理的,有可能不对。如果不对请指出来,谢谢
SQL语句笔记.md
自己整理的Java笔记,觉得还不错,就保存了下来,里面有些东西还不错
SQL语句整理,配合简要说明,配合业务实例。图文并茂,网页版,适合导入有道笔记等。
手工注入常用SQL语句笔记
特别适用于初学者哟 简明扼要,主要针对常见的用法,还有难点! 自己整理的哟! 希望对初学者有帮助哟!
谷粒商城分布式大型项目SQL语句文件,项目笔记专栏地址:https://blog.csdn.net/weixin_38297695/category_10730234.html
【第17章:Java数据库编程】_SQL语法基础笔记.pdf
sql语句函数的使用笔记,方便以后写SQL语句时忘了函数可进行查询
│ 精妙SQL语句收集_sql.sql │ ├─05 T-SQL编程 │ T-SQL.sql │ ├─06 视图 │ SysView.sql │ view.sql │ ├─07 事务 │ transaction.sql │ ├─08 存储过程 │ procudure.sql │ ├─09 索引 │ index...
SQL server 2008