SQL优化

1、建立适当的索引。sql在索引字段不要加函数,保证索引起效。如果是复合索引注意在sql的顺序。如果已经存在索引,建议你先重建索引先,因为大数据表的索引维护到了一个阶段就是乱的,一般建议重建。建立好的一般可以获得几十倍的速度提升。
2、最大数据量的表放在最前,最小的表放在最后面。sql是从最后面开始反向解析的。
3、其次是要把最有效缩小范围的条件放到sql末尾去。尤其是主键或者索引字段的条件。
4、保证你sql的算法合理性。保证复杂度和空间度的合理性。
5、必要时候使用存储过程。提升30%-40%的速度
6、建议你分页读取不要一下读完所有的数据。(使用rownum),一下子数据太多会使得内存不够用的。

_____________________________________________________________
1,SELECT子句中避免使用 ‘ * ‘
2,为搜索字段建立索引
3,永远为每张表设置一个ID
4,尽可能的使用NOT NULL
5,当只要一行数据时使用LIMIT 1
6,用TRUNCATE替代DELETE:
7,用Where子句替换HAVING子句,
避免使用HAVING子句


索引:
增加索引:
            CREATE INDEX可对表增加普通索引或UNIQUE索引以及全文索引,但是不可以对表增加主键索引
            CREATE INDEX index_name ON table_name (column_list);
            CREATE UNIQUE index_name ON table_name (column_list);
            CREATE FULLTEXT index_name ON table_name (column_list);
             table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,索引名必须指定。
             另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。
 
 
   索引类型:
 
   普通索引INDEX:    适用于name、email等一般属性
唯一索引UNIQUE:   与普通索引类似,不同的是唯一索引要求索引字段值在表中是唯一的,这一点和主键索引类似,但是不同的是,唯一索引允许有空值。唯一索引一般适用于身份证号码、用户账号等不允许有重复的属性字段上。
              主键索引:   其实就是主键,一般在建表时就指定了,不需要额外添加。
              全文检索:   只适用于VARCHAR和Text类型的字段。
   注意:全文索引和普通索引是有很大区别的,如果建立的是普通索引,一般会使用like进行模糊查询,只会对查询内容前一部分有效,即只对前面不使用通配符的查询有效,如果前后都有通配符,普通索引将不会起作用。


原文地址:https://www.cnblogs.com/hero123/p/9299981.html