| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySQL适合创建索引的11种情况及不适合创建索引的7种情况 -> 正文阅读 |
|
[大数据]MySQL适合创建索引的11种情况及不适合创建索引的7种情况 |
数据准备:
哪些情况适合创建索引
具有唯一索引的字段,即使是组合字段,也必须建成唯一索引。唯一索引对 insert 的速度损耗可以忽略,但是提高的查找速度是明显的。
在 student_id 字段上没有索引时查询:耗时235ms ?添加索引:
此时再次查询:,耗时23ms,时间相差十倍左右!所以当某字段经常做 where的查询条件,一定要为其添加索引。 以下每个情况代码验证和以上一样,分别运行有相应索引和没有索引两种情况,比较运行时间。明显可以看出索引可以大大的降低查询时间。一一列举代码略显冗余,所以这里不再赘述代码,只列出剩余的情况及相关说明。
排序后分组或排序自然是非常快了!
排序后去重自然也更快了!
首先,连接表的数量尽量不要超过三张,因为每增加一张表就相当于增加了一次嵌套的循环。数量级增长会非常快,严重影响查询的效率。 其次,对 WHERE 条件创建索引, 因为 WHERE 才是对数据过滤的条件。如果数据量非常大的情况下,没有 WHERE 条件过滤是非常可怕的。 最后,对用于连接的字段创建索引,并且该字段在多张表中的类型必须一致。比如 course_id 在两张表中都为 int(11) 类型,而不能一个为 int 另一个为varchar 类型。
在 VARCHAR 字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度。
限制索引的数目在实际工作中,我们也需要注意平衡。索引的数目不是越多越好。我们需要限制每张表上的索引数量,建议单张表索引数量不超过6个,原因如下:
哪些情况不适合创建索引
同理,如GROUP BY 或 ORDER BY 条件里用不到的字段,也不要设置索引。原因也很简单,不需要快速定位,设置索引也没有用!
在数据量很小的时候,原本查询时间已经很短了,不必要再添加索引。索引的回表等操作可能会使耗费时间更多!
小结索引是一把双刃剑,可提高查询效率,但也会降低插入和更新的速度并占用磁盘空间。选择索引的最终目的是为了使查询的速度更快,上面给出的原则是最基本的原则。也要结合实际情况来决定是否使用索引! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 3:21:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |