MySQL高级--索引 ---个人推荐比较实用

时间:2021-11-07 03:09:15

索引:
            概括:(相当于新华字典目录)主要是用于提升查询性能,可以快速访问定位数据库表中特定的信息,但是增删改性能降低
分类:
单列索引:一个单列索引只包含一个列
分为:
1、普通索引(最基本的索引,没有任何限制)
示例代码:ALTER TABLE extend_mobile ADD INDEX idx_city (city); idx_city索引名,自己取


2、唯一索引(索引列的值必须唯一,但允许有空值)
示例代码:ALTER TABLE extend_mobile add UNIQUE INDEX idx_code (CODE);
不允许有重复的值


3、主键索引(一种特殊的唯一索引,不允许有空值,一般建表时创建)
示例代码:ALTER TABLE ‘表名‘ ADD PRIMARY KEY(‘主键名字段‘);


4、全文索引(用于检索文本信息,仅限于MyISAM数据库引擎有效)
示例代码:ALTER TABLE ‘表名‘ ADD FULLTEXT(‘字段名‘);


组合索引:解释:一个组合索引包含两个或两个以上的列

分为
组合普通索引: ALTER TABLE extend_mobile ADD INDEX idx_city_provice (city, provice);
组合唯一索引


注意:组合索引遵循‘最左前缀原则’,意思就是建立索引的索引名必须跟查询的索引名顺序一致,,索引后面不能接运算,不能写空,null等,少用不等于,等于,可能造成索引失效 


查看和删除索引
查看 : SHOW INDEX FROM ‘表名’
删除:DROP INDEX ‘索引名’ ON ‘表名’


使用索引的优点
可以通过建立唯一索引或者主键索引,保证数据唯一性
建立索引可以大大提高检索的数据,以及减少表的检索行为
建立索引可以加速表与表直接的相连,提升连表查询效率
在分组和排序字句进行数据检索,可以减少查询的时间中分组和排序时所消耗的时间(数据库的记录会重新排序)
建立连接可以在查询中使用索引,可以大大提高性能


使用索引的缺点
在创建索引和维护索引,会消耗时间,随着数据量的增加而增加
索引文件会占据物理空间,除了数据表需要占用物理空间之外,每个索引还会占用一定的物理空间
当对表的数据进行跟新操作时,索引也需要动态的维护,这样就会降低数据维护速度