Это зависит от распределения данных.
Представьте, что у меня есть книга с 1000 тщательно напечатанными страницами, и единственными словами в моей книге были «да» и «нет», повторяющиеся снова и снова и распределяемые случайным образом. Если бы меня попросили обвести все «да», поможет ли указатель в конце книги? По-разному.
Если бы было половинное случайное распределение «да» и «нет», то поиск в индексе не помог бы. Индекс сделал бы книгу намного больше, и в любом случае я бы быстрее начал просто с лицевой стороны и пролистал каждую страницу, ища все вхождения `` да '' и обводя их, вместо того, чтобы искать каждый элемент в индекс, а затем взяв ссылку из записи индекса на страницу, на которую он ссылается.
Но если бы в моей тысячестраничной книге было, скажем, всего десять случаев «да», а все остальное было бы просто миллионами «нет», то указатель сэкономил бы мне массу времени, чтобы найти эти десять случаев «да» и обвести их кругом. .
То же самое и в базах данных. Если это распределение 50:50, то индекс не поможет - движку базы данных лучше просто пролистать данные от начала до конца (полное сканирование таблицы), а индекс просто сделает базу данных больше, и медленнее писать и обновлять. Но если это что-то вроде распределения 4000: 1 (согласно oucil в этом потоке), то поиск по индексу может значительно ускорить его, если это 1 элемент из 4000, который вы ищете .
person
Jinlye
schedule
07.04.2017