Mysql 索引
索引是什么
索引是帮忙 mysql高效获取数据的数据结构 ,数据库索引好比一本书前的目录, 能放慢数据库的查问速度 。
索引往往是存储在磁盘上的文件中
劣势:能够进步数据检索的效率
劣势:索引会占据磁盘空间,会升高更新表的效率
索引类型
主键索引 :索引列中的值必须是惟一的,不容许有空值
一般索引 :mysql 中一般索引类型,没有什么限度,容许在定义索引的列中插入反复值和空值
惟一索引 :索引列中的值必须是惟一的,然而容许为空值
全文索引 :在进行 like 含糊查问时效率比拟低,这时能够创立全文索引
空间索引 :mysql 在空间索引这方面遵循 OpenGIS 几何数据模型规定
前缀索引:能够指定索引列的长度,然而数值类型不能指定
索引的数据结构
Hash 表
二叉树
B+ 树
mysql 的索引实现
两种存储引擎的索引实现:MyISAM 索引 和InnoDb 索引
- 创立单个字段索引的语法:CREATE INDEX 索引名 on 表名(字段名)
- 创立联结索引的语法:CREATE INDEX 索引名 on 表名(字段名 1,字段名 2)
- 索引命名格局个别能够这样:idx_表名_字段名。留神有长度限度
- 删除索引:DROP INDEX 索引名 ON 表名
- 中到大数据量表适宜应用索引
- 小数据量表,大部分状况全表扫描效率更高
- 特大数据量表,建设和应用索引的代价会随之增大,适宜应用分区或分库
索引:排好序的疾速查找数据结构
单值索引: 即一个索引只蕴含单个列,一个表能够有多个单例索引
惟一索引: 索引列的值必须惟一,但容许有空值
复合索引: 即一个索引蕴含多个列
根本语法:
创立:
- create [unique] index indexName ON mytable(columnname(length));
- alter mytable add[unique] index[indexName] ON(columnname(length));
删除:DROP INDEX[indexName] ON mytable;
查看:SHOW INDEX FROM table_name\G
mysql 索引构造:BTree 索引、Hash 索引
频繁作为查问条件的字段应该创立索引
频繁更新的字段不适宜创立索引
where 条件里用不到的字段不创立索引
不适宜建设索引
表记录太小
常常增删改的表
数据反复且散布均匀的表的字段