[英]Querying a Multi column Index Table in MySQL
我有一个包含3列的单个索引的MySQL表:colA,ColB,ColC
如果我这样查询:
SELECT * FROM MyTable WHERE colA='some value' AND colB = 'some other value'
是使用索引还是只需要用colA和colB创建一个单独的索引
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.