Общие > Базы данных
Работа с индексами при WHERE из разных столбцов
volod:
-----------------------------------------------------------
http://dev.mysql.com/doc/mysql/ru/mysql-indexes.html>>
Если данная таблица имеет многостолбцовый индекс, то любой крайний слева префикс этого индекса может использоваться оптимизатором для нахождения строк. Например, если имеется индекс по трем столбцам (col1,col2,col3), то существует потенциальная возможность индексированного поиска по (col1), (col1,col2) и (col1,col2,col3).
-----------------------------------------------------------
Я это имел ввиду.
Phoinix:
volod
Хорошо... теперь скажи какие индексы нужно создать для запросов:
--- Цитировать ---... WHERE ICQ=\'nnnn\'
... WHERE LOGIN=\'nnnn\' and EMAIL=\'xxxx\'
--- Конец цитаты ---
Что в вопросе?
volod:
Если вопрос рассматривать "в лоб", то конечно и индексировать так же нужно. Но я почти что уверен, если автор продумает именно как там те запросы будут строится (where-условие), то вполне возможно редуцировать три индекса до двух или даже одного. Вот пример этого "одного" я и привел. Обрати внимание на порядок полей (логин, как наиболее часто употребляющийся идентификатор, номер аськи и уж потом емейл).
На 5 тыс. строк -- нет разницы, но для намного большего мы будем иметь существенный выиграш в дисковом пространстве.
Certer:
А какое необходимо количество строк, чтобы можно было использовать индексы (чтобы от них был толк)??? я так понимаю 5 000 это очень мало???
volod:
Хм. Ой-й-й-й, боюся я бросаться вот этими точными цифрами... Где-то, начиная тысяч с 20-30 уже можна будет ощущать разницу.
НО. Учитывай также нагрузку на БД (будут ли твой сайт спамить круглые сутки иль нет), учитывай также взаимосвязаность этой таблици с другими, "умность" запросов (вот ка-а-ак сделаешь "," 20000х20000 -- вот и капец:))...
Короче, я такое скажу: если у тебя храницца одна-одинешенька таблицца, и строк в ней вряд ли перекинет за десяточку -- можна по поводу индексирования особо не клопотаться.
Хотя...
Навигация
Перейти к полной версии