SQL优化(二)

  1. 不要在where 子句中的 = 左边进行函数,算数运算或其他表达式运算,否则系统将可能无法正确使用索引
  2. 在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能 保证系统使用该字段.
  3. 不要写一些没有意义的查询,如需生成一个空表结构,请创建表
  4. UPDATE 语句,如果只更改1,2个字段,不要update全部字段,否则频繁调用会引起明显的性能消耗,同时带来大量日志.
  5. 对于多张大数据量(这里几百条就算大了)的表JOIN,要先分页在JOIN,否则逻辑读会很高,性能很差.
  6. select count(*) from table 这种不带任何条件的count会引起全表扫描,并没有任何业务意义,是一定要杜绝的
  7. 应尽可能的避免更新 clustered 索引数据列,因为clustered索引数据的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个记录的顺序的调整,会消耗相当大的资源.若应用系统需要频繁更新 clustered 索引数据列,那么需要考虑是否应将该索引建为clustered 索引
  8. 任何地方不要使用select * from table ,不要返回用不到的任何字段
  9. 尽量使用表变量来代替临时表,如果表变量包含大量数据,请注意索引非常有限(只有主键索引)
  10. 避免频繁创建和删除临时表,以减少系统资源的消耗,临时表并不是不可以使用,适当的使用他们可以使他们可以使某些例程更有效,例如当需要重复引用大型表或者常用表中的某个数据集时.但是对于一次性事件,最好使用导出表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章