簡體   English   中英

在MySQL中查詢多列索引表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM