乐趣区

关于mysql:mysql索引

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 条件里用不到的字段不创立索引


不适宜建设索引
表记录太小
常常增删改的表
数据反复且散布均匀的表的字段

退出移动版