免费网站后台管理系统模板,亚马逊网站网址,服务器怎么运行网站,网站定制公司排行榜索引
InnoDB采用了B树索引结构。
相比于二叉树#xff0c;层级更少#xff0c;搜索效率高。
B树中叶子节点和非叶节点都会存储数据#xff0c;导致段页式存储中一页存储的键值减少#xff0c;指针也会减少#xff0c;要同样保存大量数据#xff0c;只能增加树的高度树索引结构。
相比于二叉树层级更少搜索效率高。
B树中叶子节点和非叶节点都会存储数据导致段页式存储中一页存储的键值减少指针也会减少要同样保存大量数据只能增加树的高度导致性能降低。
相比于Hash索引指出范围匹配和排序。
索引语法
唯一索引保证索引列中的值都唯一CREATE UNIQUE INDEX index_name ON table_name (column_name);全文索引支持全文搜索CREATE FULLTEXT INDEX index_name ON table_name (column_name);组合索引多条件查询:CREATE INDEX index_name ON table_name (column1, column2);主键会自动创建索引。
通过查看一个数据库中历史增删改查的频次可以决定是否需要对其使用索引优化的策略。如果数据库访问以查询为主就需要进行优化。如果以增删改为主则不需要。
SQL性能分析
命令查看最近执行的语句的性能信息
SHOW PROFILES;使用具体的 Query_ID 查询每个阶段的时间消耗
SHOW PROFILE FOR QUERY Query_ID;根据消耗的时间分析和优化sql。
explain命令分析sql命令。
EXPLAIN 的输出包括以下字段 id 表示查询中执行步骤的标识符查询按照 id 值从上到下执行。 单表查询通常只有一个步骤id 为 1。多表查询时id 越大优先级越高表示优先被执行。 select_type 表示查询的类型常见值包括 SIMPLE简单查询无子查询或联合。PRIMARY主查询存在子查询时。SUBQUERY子查询。DERIVED派生表子查询中的临时表。UNION联合查询的第二个及后续部分。 table 查询涉及的表名称。 type 表示表的访问类型性能由好到差排序为 system const eq_ref ref range index ALL ALL 表示全表扫描性能最差。优化目标是尽量使用更高效的访问类型如 ref 或 range。 possible_keys 查询中可能用到的索引。 key 查询实际使用的索引。如果未使用索引会显示 NULL。 key_len 使用索引的长度表示查询中使用的索引字段的字节数。 ref 显示索引列的比较条件例如常量或某个列。 rows 估算需要扫描的行数。行数越多查询越慢。 Extra 附加信息描述优化器的其他决策和行为。常见值包括 Using where需要通过条件过滤数据。Using index全索引覆盖扫描无需访问表。Using filesort需要额外的排序操作性能可能较差。Using temporary需要创建临时表通常发生在 GROUP BY 或 ORDER BY 操作中。
索引的使用规则——最左前缀法则
例如联合索引a,b,c。查询需要从索引的最左列开始并且不条约索引中的列。如果跳跃了某一列后面的字段索引会失效。
索引失效的情况
在索引列上进行运算字符串未加’造成隐式类型转换没有按照最左前缀法则使用like模糊匹配or连接的条件一侧有索引一侧没有mysql自行评估。全表扫瞄速度比走索引块 主键设计原则
满足业务要求尽量降低主键长度顺序插入数据主键自增避免uuid做主键或是其他自然主键业务操作中避免主键修改
糊匹配
or连接的条件一侧有索引一侧没有mysql自行评估。全表扫瞄速度比走索引块
[外链图片转存中…(img-QYOrycU5-1733740027341)]
主键设计原则
满足业务要求尽量降低主键长度顺序插入数据主键自增避免uuid做主键或是其他自然主键业务操作中避免主键修改