mysql索引:
复合索引: where 语句中的排序、分组、和范围条件。可能对查询性能造成影响
覆盖索引: 如果查询只需要薮猫索引,而无需回表:(只能适用男B-TREE索引做覆盖索引)
*索引数量,小于数据量的大小,减少mysql数据的访问I/O操作,对缓存的高速负载非常重要
*考虑innodb的聚簇索引,覆盖索引对innodb表的引擎友好,能避免在二级索引进行一次二次查询,
因为在二级索引的叶子中保留了行的主键值。
修复表,或者 减少索引和数据的碎片 可以 通过修改 当前表的 引擎为当前引擎而不做任何操作,实际已经操作了: ALTER TABLE <table> ENGINE=<engine>;
索引的使用原则:
一: 单行访问是很慢的,特别是机械硬盘存储中.
二:按顺序访问范围数据是很快的。
1:顺序的I/O不需要多次磁盘寻道,比随机I/O快,
2:假如服务器可以顺序读取,就无需额外的排序操作,而且 GROUP BY 也无需再次排序和将行按组进行聚合计算。
三:索引覆盖是很快的
假如索引包含 所需要查询的所有列,那么存储引擎就无需回表查找,避免大量的单行房内问