MySQL查询优化之索引的应用详解

时间:2024-01-12 14:14:38 

糟糕的SQL查询语句可对整个应用程序的运行产生严重的影响,其不仅消耗掉更多的数据库时间,且它将对其他应用组件产生影响。

如同其它学科,优化查询性能很大程度上决定于开发者的直觉。幸运的是,像MySQL这样的数据库自带有一些协助工具。本文简要讨论诸多工具之三种:使用索引,使用EXPLAIN分析查询以及调整MySQL的内部配置。

MySQL允许对数据库表进行索引,以此能迅速查找记录,而无需一开始就扫描整个表,由此显著地加快查询速度。每个表最多可以做到16个索引,此外MySQL还支持多列索引及全文检索。

给表添加一个索引非常简单,只需调用一个CREATE INDEX命令并为索引指定它的域即可。
列表A给出了一个例子:


mysql> CREATE INDEX idx_username ON users(username);


这里,对users表的username域做索引,以确保在WHERE或者HAVING子句中引用这一域的SELECT查询语句运行速度比没有添加索引时要快。通过SHOW INDEX命令可以查看索引已被创建(列表B)。

值得注意的是:索引就像一把 * 剑。对表的每一域做索引通常没有必要,且很可能导致运行速度减慢,因为向表中插入或修改数据时,MySQL不得不每次都为这些额外的工作重新建立索引。另一方面,避免对表的每一域做索引同样不是一个非常好的主意,因为在提高插入记录的速度时,导致查询操作的速度减慢。这就需要找到一个平衡点,比如在设计索引系统时,考虑表的主要功能(数据修复及编辑)不失为一种明智的选择。

标签:MySQL查询优化,索引
0
投稿

猜你喜欢

  • python四个坐标点对图片区域最小外接矩形进行裁剪

    2022-01-18 02:18:09
  • Windows server 2008 r2上安装MySQL5.7.10步骤

    2024-01-15 06:47:11
  • python中的随机数 Random介绍

    2022-05-08 09:49:03
  • python SOCKET编程基础入门

    2021-04-20 17:22:33
  • python中break、continue 、exit() 、pass终止循环的区别详解

    2023-03-08 15:59:52
  • 原创一个js对联广告类(兼容FireFox)

    2008-08-01 18:08:00
  • MySQL之mysqldump的使用详解

    2024-01-25 10:53:07
  • 讲解SQL Server2005数据项的分拆与合并

    2009-01-04 14:40:00
  • Linux下为不同版本python安装第三方库

    2023-11-12 05:04:35
  • perl文件读取的几种处理方式小结

    2023-03-03 20:36:43
  • Django Admin设置应用程序及模型顺序方法详解

    2021-01-18 14:45:18
  • Python 2与Python 3版本和编码的对比

    2023-10-11 01:02:18
  • Python PaddlePaddle机器学习之求解线性模型

    2023-04-19 08:35:14
  • asp如何处理页面执行时发生的错误?

    2009-11-14 20:43:00
  • Python3导入自定义模块的三种方法详解

    2021-06-05 18:49:27
  • Java如何连接数据库图文教程

    2024-01-16 20:45:16
  • 细化解析:怎样把你的MySQL完全中文化

    2008-12-19 17:48:00
  • 解决Unable to access 'https://gitee.com/自己的项目/': Could not resolve host: gitee.com问题

    2023-11-06 06:47:59
  • golang等待触发事件的实例

    2024-05-08 10:17:31
  • pandas数据清洗,排序,索引设置,数据选取方法

    2023-06-13 15:08:45
  • asp之家 网络编程 m.aspxhome.com