SQL优化
对于关系型数据库而言。随着数据量的增加,SQL语句的优劣对系统的响应速度的影响越来越明显,SQL优化也成为每一个数据相关工作人员的必备技能。以下是我工作,学习的总结与大家分享,如发现不合理或错误的地方欢迎大家及时指出,共同交流、共同成长。
SQL优化的可以从以下几个大方面去考虑:1.使用索引,避免全表扫描。2.使用临时表存放中间结果。3.查询哪些字段就select哪些字段,尽量不使用select *。
1、使用索引,避免全表扫描
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。(来自百度文库)
如果不使用索引系统会将将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作,因此在SQL语句的执行过程中让优化器使用索引,避免全表扫描变得尤为重要。那么优化器会根据何种原则来删除索引呢,下面是几个常见的场景:
LIKE的使用
通配符出现在首位,无法使用索引,反之可以。
-- 无法使用索引
SELECT .. FROM .. WHERE NAME LIKE '%T%' ;
-- 可以使用索引
SELECT ..