【问题标题】:Querying a Multi column Index Table in MySQL在 MySQL 中查询多列索引表
【发布时间】:2017-04-26 11:19:24
【问题描述】:

我有一个包含 3 列的单个索引的 MySQL 表: colA, ColB, ColC

如果我这样查询:

SELECT * FROM MyTable WHERE colA='some value' AND colB = 'some other value'

是否使用了索引,或者我是否需要仅使用 colA 和 colB 创建一个单独的索引

【问题讨论】:

  • 通常情况下,是的 - 尽管您可以自己轻松地进行测试。定义索引的顺序很重要。请参阅下面的示例。

标签: mysql


【解决方案1】:
DROP TABLE IF EXISTS my_table;


CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,dense INT NOT NULL
,sparse INT NOT NULL
, other INT NOT NULL
, INDEX(dense,sparse,other)
);

INSERT INTO my_table VALUES (1,1,1,1);

INSERT INTO my_table (dense,sparse,other) SELECT RAND()*10,RAND()*1000000,RAND()*1000 FROM my_table;

-- Repeat last command 10 times, or so...


EXPLAIN SELECT * FROM my_table WHERE dense = 9 AND sparse = 1000;
+----+-------------+----------+------+---------------+-------+---------+-------------+------+-------+
| id | select_type | table    | type | possible_keys | key   | key_len | ref         | rows | Extra |
+----+-------------+----------+------+---------------+-------+---------+-------------+------+-------+
|  1 | SIMPLE      | my_table | ref  | dense         | dense | 8       | const,const |    1 |       |
+----+-------------+----------+------+---------------+-------+---------+-------------+------+-------+
1 row in set (0.00 sec)

EXPLAIN SELECT * FROM my_table WHERE sparse = 1000;
+----+-------------+----------+------+---------------+------+---------+------+-------+-------------+
| id | select_type | table    | type | possible_keys | key  | key_len | ref  | rows  | Extra       |
+----+-------------+----------+------+---------------+------+---------+------+-------+-------------+
|  1 | SIMPLE      | my_table | ALL  | NULL          | NULL | NULL    | NULL | 16384 | Using where |
+----+-------------+----------+------+---------------+------+---------+------+-------+-------------+
1 row in set (0.00 sec)

【讨论】:

  • 优秀。感谢您向我展示 EXPLAIN 声明。非常有用。
猜你喜欢
  • 2012-09-25
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 2021-12-13
  • 2013-09-16
  • 2010-09-20
  • 2017-04-15
  • 2012-07-31
相关资源
最近更新 更多