почему дополнительное «использование где; использование индекса» вместо «использования индекса» - PullRequest
0 голосов
/ 16 июня 2019

почему дополнительная «использует где; использует индекс» вместо «используя индекс».

       CREATE TABLE `pre_count` (                
         `count_id` varchar(38) NOT NULL,        
         `cam_id` varchar(38) NOT NULL,       
         `count_time` datetime NOT NULL,         
         PRIMARY KEY (`cam_id`,`count_time`)  
       ) ENGINE=InnoDB DEFAULT CHARSET=utf8      

объясните select count_time from pre_count where cam_id = '56849645645645646'

результат:

1   SIMPLE  pre_count   ref PRIMARY PRIMARY 116 const   1   Using where; Using index

1 Ответ

1 голос
/ 16 июня 2019

Это просто означает, что условия в вашем предложении WHERE будут использоваться для ограничения строк, возвращаемых запросом.Если у вас * нет «Using where» в вашем EXPLAIN extra, тогда запрос не будет ограничивать строки.

Это значение согласно руководству: https://dev.mysql.com/doc/refman/8.0/en/explain-output.html#explain-extra-information

Предложение WHERE используется для ограничения того, какие строки сопоставлять со следующей таблицей или отправлять клиенту.Если вы специально не собираетесь извлекать или проверять все строки таблицы, у вас может быть что-то не так в вашем запросе, если значение Extra не использует Where, а тип объединения таблицы - ALL или index .

Могу поклясться, что видел случаи, когда в моем отчете EXPLAIN отсутствовало «Использование где», хотя в запросе использовался индекс и ограничивались строки для возврата.

Я вынужден сделать вывод, что «Использование где» не сообщается достоверно для всех типов ограничений строк.

Другие люди заметили, что значение «Использование где» сбивает с толку или противоречиво: https://bugs.mysql.com/bug.php?id=30733

...