я ожидал, либо индекс будет использоваться для моего запроса SELECT DISTINCT ниже:Почему мой индекс не используется для этого запроса 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 мс в одной таблице для индексированных целых столбцов.
У меня было значение ft_min_word_len равным 4, но изменение его на 1 и восстановление таблиц не имеет никакого значения. –
жаль, что это не помогло. – t00ny