该如何优化SQL语句以提升速度

好的白癜风专科医院 https://yyk.39.net/bj/zhuanke/89ac7.html

  不论是何种语言的编程人员,都会接触到SQL语句,SQL语句简单来说其实就是增删改查,但其中却充满了细节,尤其是大型网站,对查询速度是十分   1、避免全表扫描,首先考虑在where及orderby的列上建立索引。

  2、尽量避免在where子句中使用!=或操作符,MySQL只有对以下操作符才使用索引:,=,=,,=,BETWEEN,IN,以及某些时候的LIKE。

  3、尽量避免在where子句中使用or来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,可以使用UNION合并查询。

  4、in和notin也要慎用,否则会导致全表扫描,对于连续的数值,能用between就不要用in了。

  5、如果在where子句中使用参数,也会导致全表扫描。

  6、尽量避免在where子句中对字段进行表达式操作,应尽量避免在where子句中对字段进行函数操作。

  7、索引虽然可以提高相应的select的效率,但同时也降低了insert及update的效率,因为insert或update时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。

  8、尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。

  9、尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。

  10、常见的简化规则如下:不要有超过5个以上的表连接(JOIN),考虑使用临时表或表变量存放中间结果。少用子查询,视图嵌套不要过深,一般视图嵌套不要超过2个为宜。

  11、用OR的字句可以分解成多个查询,并且通过UNION连接多个查询。他们的速度只同是否使用索引有关,如果查询需要用到联合索引,用UNIONall执行的效率更高.多个OR的字句没有用到索引,改写成UNION的形式再试图与索引匹配。一个关键的问题是否用到索引。

  12、尽量使用“=”,不要使用“”。

  13、尽量使用exists代替selectcount(1)来判断是否存在记录,count函数只有在统计表中所有行数时使用,而且count(1)比count(*)更有效率。

  14、sql语句用大写,因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行。

  15、别名的使用,别名是大型数据库的应用技巧,就是表名、列名在查询中以一个字母为别名,查询速度要比建连接表快1.5倍。

  16、避免死锁,在你的存储过程和触发器中访问同一个表时总是以相同的顺序;事务应经可能地缩短,在一个事务中应尽可能减少涉及到的数据量;永远不要在事务中等待用户输入。

  17、MySQL查询可以启用高速查询缓存。这是提高数据库性能的有效Mysql优化方法之一。当同一个查询被执行多次时,从缓存中提取数据和直接从数据库中返回数据快很多。

  18、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。




转载请注明:http://www.aierlanlan.com/grrz/1791.html