2015-03-25 3 views
1

У меня есть таблица с таблицей около 33 миллионов строк. Я пытаюсь оптимизировать свои запросы. Сейчас я использую только меньшую версию набора данных с 8 миллионами строк. Если я запускаю это:Как оптимизировать мой MySQL-запрос или таблицу?

SELECT DISTINCT c_size FROM data WHERE c_name = 'jeans' 

Она возвращает данные в 176 секунд Если я бегу:

EXPLAIN SELECT DISTINCT c_size FROM data WHERE c_name = 'jeans' 

Это результат.

id: 1 
select_type : SIMPLE 
table : data 
type : index 
possible_keys : NULL  
key : c_size 
key_len : 5 
ref : NULL 
rows : 14876049 
Extra : Using where 

У вас есть указатели на то, как я мог бы оптимизировать свои запросы, таблицу или базу данных? База данных работает через MAMP. Я администрирую базу данных с помощью Sequel Pro.

+2

Есть ли индекс c_name? – Jaco

+1

Какие индексы у вас есть? –

+0

@JacodeGroot О, посмотри на это .. Я пропустил это. Какой размер вы бы предложили для индекса? – Christoffer

ответ

1

Добавление следующего индекса в таблице данных может помочь производительности:

CREATE INDEX ix_data_c_name ON data (c_name); 
+0

Это привело к сокращению времени запроса до 4 секунд. Это все еще довольно много времени. Или это нормально? – Christoffer

+0

У вас уже есть кластерный индекс на столе? Если нет, вы можете изменить этот индекс на кластерный, и это ускорит ваши результаты. – Jaco

+0

Что такое кластеризованный индекс? Это когда я добавляю несколько (все?) Столбцов к одному и тому же индексу? – Christoffer