语句优化有哪些?数据库的优化怎样优化?"/>
Sql语句优化有哪些?数据库的优化怎样优化?
可以从几个方面考虑:
优化表结构
- 尽量使用数字型字段。若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
- 尽可能的使用
varchar
代替char
。可变长字段存储空间小,可以节省存储空间。 - 当索引列大量重复数据时,可以把索引删除掉。比如有一列是性别,只有男、女,这样的索引是无效的。
优化查询
- 应尽量避免在 where 子句中使用
!=
或<>
操作符,否则将引擎放弃使用索引而进行全表扫描。 - 应尽量避免在 where 子句中使用
or
来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描。建议使用union
替换or
- 应尽量避免在 where 子句中对字段进行
null
值判断,否则将导致引擎放弃使用索引而进行全表扫描 in
和not in
也要慎用,否则会导致全表扫描- 优化嵌套查询时可以将子查询尽量替换为多表连接查询(
JOIN
) - 任何查询也不要出现
select *
!
索引优化
- 尽量使用复合索引,而少使用单列索引
- 最左前缀法则:如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始,并且不跳过索引中的列
- 对作为查询条件和
order by
的字段建立索引 - 对查询进行优化,要尽量避免全表扫描,首先应考虑在
where
及order by
涉及的列上建立索引
其他优化
当进行数据的insert
操作的时候,可以考虑采用以下几种优化方案:
- 如果需要同时对一张表插入很多行数据时,应该尽量使用多个值表的insert语句,这种方式将大大的缩减客户端与数据库之间的连接、关闭等消耗。使得效率比分开执行的单个insert语句快。
- 手动开启事务后在进行数据插入
- 数据有序插入(按主键)
更多推荐
Sql语句优化有哪些?数据库的优化怎样优化?
发布评论