1.索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以[b]B-[/b]树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。 索引能提高查询速度 但是会增加磁盘空间存储 减慢插入 更新 删除速度(因为对数据操作后还需对索引操作)所以他是一种以空间为时间的策略,一般情况下 读频繁的表考虑索引 而写频繁的尽量避免多索引。
2.mysql索引有 普通索引 唯一索引 主键 和 全文索引
3.单列索引 和 多列索引(最左原则)
4.索引的使用(在where子句里出现的字段 和join子句里出现的字段要考虑加上索引 有唯一性的 要考虑加上唯一索引)
5.对于组合索引 遵循左原则: 如组合索引index_c1c2 对应sql1:select * from t where c1='a' and c2='b';有效(先用c1然后用c2) 对应sql2:select * from t where c1='a';有效(用到c1)对应sql3:select * from t where t2='b';无效(因为是从左用起 不能跳跃到C2)
6.索引是在存储引擎里实现的 不是在服务器层实现的所以 并不是所有的存储引擎都具有全部索引类型的
7.mysql中 只有memory支持hash索引 只有innodb支持聚簇索引
2.mysql索引有 普通索引 唯一索引 主键 和 全文索引
3.单列索引 和 多列索引(最左原则)
4.索引的使用(在where子句里出现的字段 和join子句里出现的字段要考虑加上索引 有唯一性的 要考虑加上唯一索引)
5.对于组合索引 遵循左原则: 如组合索引index_c1c2 对应sql1:select * from t where c1='a' and c2='b';有效(先用c1然后用c2) 对应sql2:select * from t where c1='a';有效(用到c1)对应sql3:select * from t where t2='b';无效(因为是从左用起 不能跳跃到C2)
6.索引是在存储引擎里实现的 不是在服务器层实现的所以 并不是所有的存储引擎都具有全部索引类型的
7.mysql中 只有memory支持hash索引 只有innodb支持聚簇索引