MYSQL索引
Posted 路迢迢
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL索引相关的知识,希望对你有一定的参考价值。
mysql索引
MySQL索引类型
MySql常见索引类型有:主键索引、唯一索引、普通索引、全文索引、组合索引
索引创建
PRIMARY KEY(主键索引)
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
UNIQUE(唯一索引)
ALTER TABLE `table_name` ADD UNIQUE (`column`)
INDEX(普通索引)
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
FULLTEXT(全文索引)
ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
组合索引(包含多列的索引,与单行索引相对
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
说明:关于主键索引,为表定义主键将自动创建主键索引,而且在数据库管理工具中“设计表”中的“索引”项也无法看到创建好的主键索引。
查看索引
SHOW INDEX FROM table_name
删除索引
DROP INDEX index_name ON tableName
MySQL各种索引区别
索引 | 特点 |
---|---|
唯一索引(UNIQUE) | 与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值 |
主键索引(PRIMARY) | 它 是一种特殊的唯一索引,不允许有空值。 |
普通索引(INDEX) | 最基本的索引,没有任何限制 |
全文索引(FULLTEXT ) | 仅可用于 MyISAM 表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时耗空间 |
组合索引 | 为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则 |
触发索引
MySQL只对 <,<=,=,>,>=,BETWEEN,IN,以及某些时候的 LIKE 才会触发索引。
索引失效
- 全值匹配,索引最高效
- 最佳左前缀法则:复合索引,查询从索引最左开始,且不能跳过
- 复合索引,带头大哥不能少,索引的第一个字段不能丢失
- 复合索引,中间兄弟不能断;
- 不在索引列上做任何操作(计算,函数,自动或手动类型转换),会导致索引失效
- 存储引擎不能使用索引中范围条件右边的列:查询范围(比较),右边的列索引失效
- 尽量使用覆盖索引(只访问索引的查询(查询列和索引列一直)),减少SELECT *;
- 使用不等于(!= 或 <>)的时候无法使用索引
- is null 或is not null 无法使用索引
- like以通配符开头(‘%abb‘)导致索引失效,可以放右边使用
- 覆盖索引可以解决%%:查的字段和索引字段一致
- 字符串不加单引号,索引失效(mysql自动做类型转换)
- 少用or,导致索引失效
索引的不足
- 虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一索引文件。
- 建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件会得膨胀很快。
以上是关于MYSQL索引的主要内容,如果未能解决你的问题,请参考以下文章
javascript UV Index Monitor App订阅PubNub并显示UV索引值。博文的代码片段。在这里查看项目:https:// githu
c_cpp UV Index Indicator订阅PubNub并使用颜色显示UV索引值。博文的代码片段。在这里查看项目:https:/