MySQL 索引
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL 索引,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2578字,纯文字阅读大概需要4分钟。
内容图文
当数据保存在磁盘介质上时,它是作为数据库存放的,每条数据是作为一个整体存储的。磁盘存放数据的数据结构类似于链表,即,每个节点除了包含本身数据,还包含一个指向下个节点的指针。相关数据逻辑相连,物理地址可以任意。
那么问题来,如果一个表有10W个数据,如果没有索引,那么当你按某个条件查找数据时候,系统只能遍历数据,直到找到你需要的数据。
如果你把这个字段做成了索引,系统会把这个索引字段按照一定的规则制成一个单独的数据结构,当你需要按照这个字段查找时候,系统会在这个索引数据结构二分查找,把原来复杂度为o(N)降为o(log2N),大大提高查询速度。
2、索引
2.1 单列索引
2.1.1 普通索引
普通索引是最基本的索引。由关键字KEY或INDEX定义的索引,加快对数据的访问速度。对于那些经常的查询条件(WHERE column=)或排序条件(ORDER BY column)的字段,应该创建索引。
CREATE INDEX 索引名 ON 表名(字段名);
ALTER TABLE 表名 ADD KEY 索引名(字段名);
ALTER TABLE 表名 ADD INDEX 索引名(字段名);
2.1.2 唯一索引
普通索引允许在数据列中包含重复的值,比如,名字,这个项可以重复。对于一些不能重复的值,比如,个人的身份证号,应该设置为UNIQUE INDEX 把他设置为唯一索引。
ALTER TABLE people ADD UNIQUE INDEX 索引名(字段名);
2.1.3 主索引
主键会被默认添加一个索引,这就是“主索引”。主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是PRIMARY而不是UNIQUE。主键索引一定是唯一性索引,唯一性索引不一定是主键索引。
ALTER TABLE people ADD PRIMARY KEY 索引名(字段名);
2.2 组合索引
包含多个字段的索引。
CREATE INDEX 索引名 ON 表名(字段名,字段名);
例如:
CREATE INDEX all_index ON people(last_name,first_name,gender);
![MySQL 索引 - 文章图片](/upload/getfiles/0001/2021/4/24/20210424113319187.jpg)
在使用查询的时候遵循MySQL组合索引的“最左前缀”,什么是最左前缀:where 时的条件要按照建立索引时候字段的排序方式。比如,INDEX(A,B,C)可以被当做A或(A,B)的索引来使用,但不能当做B,C或(B,C)的索引来使用。
Where A= ‘xxx’ and B like = ‘aa%’ and C=’sss’ 改查询只会使用索引中的前两列,因为like是范围查询。范围查询不算在索引内,因为索引使用 hash值来计算,模糊条件无法计算得到hash值。
2.3 全文索引
文本字段(text、blog)建立索引时候需要指明索引的长度。如果对文本字段进行模糊查询,即 where column like ‘%xx%‘,因为是模糊查询,所以索引会失效。
可以设置全文索引:
ALTER TABLE 表名ADD FULLTEXT(字段名1, 字段名2)
有了全文索引,就可以利用索引来进行关键字查询了。
ELECT
* FROM tablename WHERE MATCH(column1, column2) AGAINST(‘xxx′, ‘sss′, ‘ddd′)
查询出column1 和 column2 中包含这些关键字的记录。
MySQL 索引
标签:2.3 order 数据结构 log pac span order by img sql
本文系统来源:http://www.cnblogs.com/moongeek/p/7452729.html
内容总结
以上是互联网集市为您收集整理的MySQL 索引全部内容,希望文章能够帮你解决MySQL 索引所遇到的程序开发问题。
如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
来源:【匿名】