Показать сообщение отдельно
  #72 (permalink)  
Старый 26.03.2015, 16:18
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
Т.к. по полю создан индекс, то where логично должно быть быстрее, ты же сам писал табличка и всё такое...
Конечно. Я просто хотел подчеркнуть, что полноекстовый индекс работает немного иначе, он не делает:

var index = {
  'someText': link,
  'more text': link
};


А анализирует сам текст и строит хитрый индекс. Полнотекстовый поиск нужен, когда мы ищем не точную строку, а фразу из строки.

***

Кстати ещё нюанс: когда делается запрос, то он использует только один индекс (думаю понятно почему), поэтому если есть частый запрос, в котором участвуют несколько полей, то лучше сделать составной индекс, т.е. индекс по нескольким полям, например, как бы это выглядело, если у нас есть индекс по age->skils->country

var index = {
  22: {
    '80lvl': {
        ru: [link1, link2, link3],
        en: [link1, link2]
    },

    '90lvl': ...
  }
}


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

Логичный вопрос: как СУБД понимает, какой индекс использовать? Ну для начала она пытается найти индекс, который бы охватывал как можно больше полей в запросе, а если в итоге подошло несколько равнозначных индексов, то многие СУБД выполнят и тот и тот, соберут статистику и выберут того, кто работал быстрее (это очень упрощённое описание алгоритма )

+ Многие СУБД делают самостоятельно много оптимизаций, как балансирование, сортировка и т.д. как например в случае с твоими числами - это здорово, но полагаться на это нельзя.
__________________
kobezzza
code monkey
Ответить с цитированием