SQL优化(索引)

最近参与的一个项目动辄查询几十万几百万的数据量,对sql性能的要求还是比较苛刻的,我一个菜鸟感受到了深深的压力,决心在空余时间对sql优化好好补习一下。

白天外出忙活了一天,晚上终于闲了下来。决定整理一下公司牛人总结的有关sql索引方面知识点。
我们都知道当查询数据量比较大的时候需要建立索引,但是索引的建立一般遵循什么样的原则呢?

1、确定针对该表的操作是大量的查询操作还是大量的增删改操作
2、尝试简历索引来帮助特定的查询,如果某个字段频繁的在where子句出现则为之建立索引
3、where语句中不得不对查询采用函数查询的时候(如upper函数)最好为相应的函数建立索引
4、在sql语句中对经常进行group by、order by的字段建立索引
5、用于外表连接的字段建立索引
6、在经常存取的多个列上建立复合索引,但要注意复合索引的建立顺序要按照使用的频率来确定
7、尝试建立复合索引来进一步提高sql查询性能,但是修改复合索引将消耗更长的实践,同事复合索引也占用比较大的磁盘空间
8、对比比较小的表,建立索引有可能会影响查询性能,如果该表只有几个数据块大小并且可以被oracle一次性抓取,那么也就没有建立索引的必要了。因为在表比较小的情况下可能不会走索引
9、在不同值较少的字段上就没有建立索引的必要了,比如性别字段
10、避免选择大型数据类型的列作为索引
11、充分利用索引可以减少表扫面i/o的次数,有效的避免对整张表的搜索。
12、经常被更新,或者说一个表虽然很大,但是如果多数查询返回的结果都超过表中的总行数的4%,那么一般认为也是不适合建立索引的
13、经常查询的记录数目小于表中所有记录总数的5%的时候应当创建索引
14、存储索引的表空间最好单独设定
15、随着数据的变化其实索引的效率会降低,因此应该定期重建索引
16、对于更新,插入,删除频繁操作的列不适合建立索引

明晚继续整理索引失效的原因~

猜你喜欢

转载自blog.csdn.net/Mattscl/article/details/76408077