индекс дальности mysql - PullRequest
       6

индекс дальности mysql

0 голосов
/ 15 декабря 2008

У меня очень просто выбрать вот так:

SELECT * FROM table 
  WHERE column1 IN (5, 20, 30);

для столбца1 установлен индекс, после объяснения запроса используется индекс, все выглядит нормально.

но если в диапазоне более трех значений, например:

  SELECT * FROM table 
      WHERE column1 IN (5, 20, 30, 40);

Индекс не используется, и выбор выполняется по всем записям. Я делаю что-то неправильно? спасибо

1 Ответ

2 голосов
/ 15 декабря 2008

Сколько строк MySql считает в таблице?

Mysql часто (обычно правильно!) Предполагает, что будет быстрее выполнять последовательное сканирование строк, а не возиться с более сложным доступом через индекс.

Это варьируется от СУБД к СУБД, но точка компромисса составляет где-то около 30% строк.

IE. Если оптимизатор ожидает, что будет выбрано более 30% строк, он будет последовательно сканировать всю таблицу, поскольку это обычно быстрее, чем выполнение большого количества прямого доступа через индексы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...