MySQL паўнатэкставага пошуку і індэксаў у MySQL

Image representing MySQL as depicted in CrunchBase

Некаторы час таму я пісаў пра MySQL паўнатэкставы пошук 🙂 Сёння ў мяне быў вельмі цікавы досвед з адным запытам. У агульным выпадку, калі праграма выконвае пошук вынікаў, якія адчувае недахоп у іншы табліцы. Выбераце адзін асноўны і дапаможны абраны ў WHERE часткі прыкладання. Увогуле і шкілетам

SELECT DISTINCT (
`field`
)
FROM `table1`
WHERE `someID` =44
AND `firsTextField` NOT
IN (

SELECT DISTINCT (
`secondTextField`
)
FROM `table2`
WHERE `otherID` =44
)

Увогуле, элементарна запыце. Я напісаў гэта для 30 сек запусціць яго, і затрымаўся машыну. Пасля таго, як доўга і цярпліва чакаючы з майго боку ці толькі ~ 43 сек . Ён сплюнуў вынік лол . пффф дурдом. Увайсці працэсар машыны Паглядзіце, як правіла, занятыя амаль халастыя абароты. Шок і жах. Выканаць зноў зноў запытаць той жа вынік. ебать WTF. Запусціце прыкладанне і растлумачыць усё, свеціцца – толькі другое поле secondTextField паўнатэкставы пошук без індэкса, і ёсць сціплы паднос каля 35K радкоў. хто чытаў – поўны пошук тэксту не е індэкс. Ужо ясна, праблема хутка адзін

ALTER TABLE `links` ADD INDEX ( `linkUrlID` ) 

І ўсё ўстала на месца заняў запыт 0.0005 сек 😀

Будзьце асцярожныя, як вы кладзеце індэксы іх залежаць ад вашага запыту лімітавай хуткасці.

p.s Като цяло аз съм си крив за горната ситуация не само защото липсва индекс ами защото не ползва full text search метода 😀

падтрымліваючы Zemanta

Пакінуць адказ

Ваш адрас электроннай пошты не будзе апублікаваны. Абавязковыя палі пазначаныя *

Анты-спам *