数据库查询优化

匿名 (未验证) 提交于 2019-12-03 00:22:01

1. 数据库表结构(设计)优化

  1. 合理选择表字段类型类型

    1. int类型优先于varchar 类型 优先于 text类型

      1. varchar (变长字符串)类型优先于 char(不可变长)类型

    2. 表分割:对于频繁使用的且数据量增长很快的表进行表的分割

    3. 水平分割:将表进行水平条目方向的分割,根据数据的活跃度(被使用程度)将表分为主表、次表等等。主表为活跃度较高的数据。因此分割前要对系统数据活跃度进行调查。将一张大表分割为主表、次表,可缩小、精确查询范围,从而达到优化查询的目的。

    4. 垂直分割:从字段方向对表进行分割,对表进行瘦身,删除冗余字段或不常用字段,将这些字段放到其他表中,当需要时连接查询得到需要的数据。

2. sql语句优化

  1. 创建并正确使用索引,避免查询放弃使用索引,进行全表扫描

    1. 避免在索引字段上使用 is null 和 is not null ――》字段尽量不要允许为null 可以用0或其他特殊字符代替

    2. 避免在索引字段上使用 != 、 <> 和not in

    3. 避免在where子句中对一个有索引的字段和一个没有索引的字段使用or连接

    4. 避免使用前导模糊查询 如 like ’%ab%‘

    5. 避免对索引字段进行表达式或者函数操作

    6. 避免对索引字段使用变量

    7. 组合索引的顺序也会影响到索引的使用情况,从而影响到查询效率

  2. 尽量缩小精确查询范围,避免全表扫描

  3. 减少返回的数据量(分页),避免返回大量无用数据,从而减少网络传输和磁盘访问

  4. 优先考虑使用连接查询(连接查询优先于嵌套查询)

  5. 使用存储过程,但是不便于维护

3. 数据库慢查询

  1. explain 关键字输出sql语句执行的情况,可以查看到哪些sql语句是全表搜索,或者使用了什么索引。

4. 经验之谈

  1. 断点运行可以看出哪段代码运行过慢(很慢的情况下)。从而定位到查询效率低的问题。

参考学习网址 : https://blog.csdn.net/zhushuai1221/article/details/51740846


文章来源: 数据库查询优化
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!