explain
sql index
where order by select
using filesort
using temp table
1、索引:
是一钟数据结构,能够提高数据的检索速度
索引也存储在硬盘上,也是文件
1,3,2,5,7,9,2,5,6
全表扫描
索引特点:排好序,快速查找,数据结构
Index_type
-----------
BTREE
BTree:Balance tree
Hash 索引 crc16
Memory存储引擎,内存数据表存储引擎
特点:查找高效,理论上面只需要查找一次
缺点:会产生地址冲突,如果地址冲突比较多的话,索引的维护就比较麻烦,代价很高
局限:
1、hash索引只能用于等值比较,也就是范围查找用不上索引,等值比较包含=,<=> ,in()
2、无法使用索引最左前缀列原则
create index idx_id_name(id name)
where id=1
因为mysql主要推荐的是myisam,innodb表存储引擎
聚集索引和非聚集索引原理(数据的物理存储结构)
非聚集索引:
innodb_file_per_table
innodb btree
*.idb:存储索引的值,也会存储其他普通字段
innodb 主键,非空唯一,默认innodb会自己维护一个唯一id rowid
索引的优缺点:
优点:提高数据检索速度,降低磁盘IO读写
因为数据是排好序的,这样就降低了数据排序的运算成本,从而降低了CPU的消耗
缺点:索引存储在磁盘上面,所以占空间
字段更新会有性能损耗,因为更新索引字段的时候不仅要更新数据而且需要更新索引树
sql index
where order by select
using filesort
using temp table
1、索引:
是一钟数据结构,能够提高数据的检索速度
索引也存储在硬盘上,也是文件
1,3,2,5,7,9,2,5,6
全表扫描
索引特点:排好序,快速查找,数据结构
Index_type
-----------
BTREE
BTree:Balance tree
Hash 索引 crc16
Memory存储引擎,内存数据表存储引擎
特点:查找高效,理论上面只需要查找一次
缺点:会产生地址冲突,如果地址冲突比较多的话,索引的维护就比较麻烦,代价很高
局限:
1、hash索引只能用于等值比较,也就是范围查找用不上索引,等值比较包含=,<=> ,in()
2、无法使用索引最左前缀列原则
create index idx_id_name(id name)
where id=1
因为mysql主要推荐的是myisam,innodb表存储引擎
聚集索引和非聚集索引原理(数据的物理存储结构)
非聚集索引:
innodb_file_per_table
innodb btree
*.idb:存储索引的值,也会存储其他普通字段
innodb 主键,非空唯一,默认innodb会自己维护一个唯一id rowid
索引的优缺点:
优点:提高数据检索速度,降低磁盘IO读写
因为数据是排好序的,这样就降低了数据排序的运算成本,从而降低了CPU的消耗
缺点:索引存储在磁盘上面,所以占空间
字段更新会有性能损耗,因为更新索引字段的时候不仅要更新数据而且需要更新索引树
所以说,如果字段更新比较频繁,那么这个字段就不适合建立索引