sql优化之多见多记

对sql语句的优化:

  1. 使用正确的索引:索引可以加快数据的检索速度,因此应该为需要频繁查询的列创建索引。索引一般情况下都是高效的。索引本身在提高查询效率的同时回影响插入,更新,删除的效率,频繁写的表不易建立索引。
  2. 尽可能减少查询中使用的表数量:查询中使用的表越多,执行时间越长。因此,应该尽可能地减少查询中使用的表数量。
  3. 使用精确的过滤条件:使用精确的过滤条件可以减少查询的结果数量,从而提高查询性能。
  4. 尽可能使用简洁的SQL语句:简洁的SQL语句更容易被数据库引擎理解和执行,因此应该尽可能使用简洁的SQL语句。
  5. 使用存储过程和触发器:存储过程和触发器可以重复使用代码,减少代码冗余,提高代码质量和性能。
  6. 使用参数化查询:参数化查询可以减少SQL执行时间,提高查询性能。
  7. 合理设置数据库参数:合理设置数据库参数可以优化数据库性能,例如设置缓存池大小、最大连接数等。
  8. 使用批处理操作:批处理操作可以减少数据库连接的开销,提高数据库性能。
  9. 避免使用子查询:子查询会增加查询的复杂度和执行时间,因此应该尽可能避免使用子查询。
  10. 使用最新的数据库版本:最新的数据库版本通常包含了更多的优化和改进,因此应该使用最新的数据库版本
  11. 能分开写的语句就分开写,不要一次性解决,这样对效率来说是很大的开销。
  12. 尽量避免在where子句中对字段进行函数或表达式操作
  13. 避免使用is not null,in等一些无法让系统使用索引的操作词:
  14. 不建议使用select * from a ,用具体的字段来替代“*”,不要返回用不到的字段。尽量避免向用户端返回大数据量。

索引无效情况
过于频繁的更新表:如果表被频繁更新,例如删除、插入或更新记录,那么索引可能会失效,因为数据库引擎需要不断地重新计算和维护索引。

索引的选择不当:如果选择了错误的索引,例如选择了不常用的列或者过于复杂的索引结构,那么索引可能会失效。

数据类型不匹配:如果索引列的数据类型与查询列的数据类型不匹配,那么索引可能会失效。

过于大的索引:如果索引过于大,例如包含了大量的记录,那么索引可能会失效。

查询条件不适合使用索引:如果查询条件不适合使用索引,例如使用了函数或者运算符,那么索引可能会失效。

数据库配置不当:如果数据库的配置不当,例如缓存池大小不足或者最大连接数过小,那么索引可能会失效

尽量不要在where子句中对字段进行null值判断、使用!=或<>操作符、使用OR来连接条件,如果一个字段有索引,一个字段没有索引,否则将导致引擎放弃索引而进行全表扫描。
select id from t where num=10 or Name = ‘admin’
可以这样查询:
select id from t where num = 10
union
select id from t where Name = ‘admin’
union all 返回所有数据,不管是不是重复。 union会自动压缩,去除重复数据。

不做列运算以及查询Like,如果’%aaa’,不会使用索引。

你可能感兴趣的:(数据库笔记,数据库,sql)