2014-11-21 3 views
2

Я хочу, чтобы список персонала работал быстрее на основе выбора клиента. Для этого я создал индекс для поля client_id.Стол индексирования не работает

Я приложил скриншот структуры таблицы и структуры индекса.

Это SQL-запрос, который я использовал для выбора.

SELECT staff_client_id,staff_id,staff_full_name from kr_staffs where staff_client_id=2 AND staff_status='active' 

Но скорость запроса такая же без индекса.

Это моя структура таблицы

enter image description here

Это индексная структура таблицы

enter image description here

+0

Как много строк в этой таблице? Как вы оцениваете производительность? Я думаю, что может произойти что-то еще: например, если ваша таблица содержит несколько тысяч строк, а запрос занимает 100 мс, то это может быть проблема с сетью между клиентом и сервером базы данных. – Dai

+0

@ Дай 2000 строк в таблице..и нет проблем в сети. –

ответ

0

Вы можете проверить план выполнения запроса, чтобы подтвердить, что индекс используется. Вы можете обратиться к EXPLAIN http://dev.mysql.com/doc/refman/5.7/en/using-explain.html.

Можете ли вы вместо того, чтобы измерять время, необходимое для следующего запроса (с индексом и без):

SELECT COUNT (*) FROM kr_staffs WHERE staff_client_id = 2 И staff_status = 'активный'

+0

Я попробовал ваш запрос без индекса и с индексом. Оба они заняли одно и то же время. –

+0

@JohnMathew Если есть много записей с staff_client_id = 2, тогда оптимизатор запросов может решить выполнить полное сканирование таблицы вместо некластеризованного индекса. Если используется индекс, то каждую запись нужно искать (для проверки staff_status или выборки данных), и это может быть дороже, чем прямое сканирование таблицы. – naresh