Я ожидал, что любой из этих индексов будет использоваться для моего запроса SELECT DISTINCT ниже:
CREATE TABLE test(
value TEXT
);
INSERT INTO test (value) VALUES ('a');
INSERT INTO test (value) VALUES ('b');
INSERT INTO test (value) VALUES ('c');
CREATE INDEX value_i ON test(value(32));
CREATE FULLTEXT INDEX value_i_ft ON test(value);
SELECT DISTINCT value FROM test;
EXPLAIN SELECT DISTINCT value FROM test;
Однако, похоже, нет:
--------------
EXPLAIN SELECT DISTINCT value FROM test
--------------
+----+-------------+-------+------+---------------+------+---------+------+------+-----------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-----------------+
| 1 | SIMPLE | test | ALL | NULL | NULL | NULL | NULL | 2 | Using temporary |
+----+-------------+-------+------+---------------+------+---------+------+------+-----------------+
1 row in set (0.00 sec)
Я использую mysql Ver 14.12 Distrib 5.0.77 для redhat-linux-gnu (i686) с использованием readline 5.1. Этот тип запроса занимает 1,5 с на 70 000 строк с 250 различными значениями по сравнению с 10 мс в той же таблице для индексированных целочисленных столбцов.