Mysql笔记-索引

索引类别
唯一索引UNIQUE,普通(非唯一),FULLTEXT,SPATIAL(MyISAM&NOT NULL),HASH

创建索引

ALTER TABLE tbl_name ADD INDEX index_name (index_columns);
CREATE INDEX index_name ON tbl_name (index_columns);
CREATE TABLE tbl_name
(
... column definitions ...
INDEX index_name (index_columns),
UNIQUE index_name (index_columns),
PRIMARY KEY (index_columns),
FULLTEXT index_name (index_columns),
SPATIAL index_name (index_columns),
...
)

删除索引

DROP INDEX index_name ON tbl_name;
ALTER TABLE tbl_name DROP INDEX PRIMARY KEY;

索引缺点
写入一条数据行,要求所有索引都要做出改变
innoDB数据表的共享表空间不受操作系统文件尺寸的限制,他可以包含多个文件
MyISAM大量地索引一个数据表可能使索引文件比数据文件更快地到达他的尺寸

索引使用的Tips

  • 尽量用搜索,分类或分组的数据列编制索引,如where子句中出现的数据列,order by,group by出现的数据列,MIN()MAX()聚合函数,联接子句中出现的数据列
  • 重复少的数据列
  • 越短越好
  • InnoDB使用聚集索引,让主键尽量短小将更有好处。聚集索引(clustered index),数据行和主键值集中保存在一起。其他的索引都是二级索引->保存着主键值和二级索引值。
  • 为字符窜前缀编索引
  • 从左匹配
  • 索引类型和比较操作类型匹配,如memory的默认散列索引,一对一,擅长=或者<=>
  • MIN()或者MAX(),数据列带索引,那么最小值和最大值能够被迅速找到而不通过逐行检查的方法来找到
  • ORDER BY和GROUP BY子句
  • FORCE/USE/IGNORE Index
  • STRAIGHT_JOIN强制优化器按特定顺序使用数据表

你可能感兴趣的:(mysql,学习笔记)