Цитата:
|
Т.к. по полю создан индекс, то where логично должно быть быстрее, ты же сам писал табличка и всё такое...
|
Конечно. Я просто хотел подчеркнуть, что полноекстовый индекс работает немного иначе, он не делает:
var index = {
'someText': link,
'more text': link
};
А анализирует сам текст и строит хитрый индекс. Полнотекстовый поиск нужен, когда мы ищем не точную строку, а фразу из строки.
***
Кстати ещё нюанс: когда делается запрос, то он использует только один индекс (думаю понятно почему), поэтому если есть частый запрос, в котором участвуют несколько полей, то лучше сделать составной индекс, т.е. индекс по нескольким полям, например, как бы это выглядело, если у нас есть индекс по age->skils->country
var index = {
22: {
'80lvl': {
ru: [link1, link2, link3],
en: [link1, link2]
},
'90lvl': ...
}
}
Думаю логика ясна, обращаю внимание, что порядок параметров при запросе должен совпадать с порядком полей в составном индексе.
Логичный вопрос: как СУБД понимает, какой индекс использовать? Ну для начала она пытается найти индекс, который бы охватывал как можно больше полей в запросе, а если в итоге подошло несколько равнозначных индексов, то многие СУБД выполнят и тот и тот, соберут статистику и выберут того, кто работал быстрее (это очень упрощённое описание алгоритма
)
+ Многие СУБД делают самостоятельно много оптимизаций, как балансирование, сортировка и т.д. как например в случае с твоими числами - это здорово, но полагаться на это нельзя.