gpt4 book ai didi

sql - 多个和单个索引

转载 作者:IT老高 更新时间:2023-10-28 23:42:30 25 4
gpt4 key购买 nike

自从我使用 MySQL 多年以来,我有点不好意思问这个问题,但是哦。

我有一个包含两个字段的表,ab。我将对其运行以下查询:

  • SELECT * FROM ... WHERE A = 1;
  • SELECT * FROM ... WHERE B = 1;
  • SELECT * FROM ... WHERE A = 1 AND B = 1;

从性能的角度来看,以下索引配置中的至少一种是否对至少一个查询较慢?如果是,请详细说明。

  1. ALTER TABLE ... 添加索引 (a); ALTER TABLE ...添加索引(b);
  2. ALTER TABLE ... ADD INDEX (a, b);
  3. ALTER TABLE ... 添加索引 (a); ALTER TABLE ...添加索引(b); ALTER TABLE ...添加索引(a,b);

谢谢(注意我们说的是非唯一索引)

最佳答案

是的,至少有一种情况要慢得多。如果只定义以下索引:

ALTER TABLE ... ADD INDEX (a, b);

... 那么查询 SELECT * FROM ... WHERE B = 1; 将不会使用该索引。

当您使用复合键创建索引时,键的列顺序很重要。建议尝试对 key 中的列进行排序以增强选择性,将最具选择性的列放在 key 的最左侧。如果您不这样做,并将非选择性列作为键的第一部分,则可能根本不使用索引。 (来源:Tips on Optimizing SQL Server Composite Index)

关于sql - 多个和单个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2155656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com