Image representing MySQL as depicted in CrunchBase

Ceva timp în urmă am scris despre MySQL Full Text Search 🙂 Azi am avut o foarte interesant experience cu o interogare. În General, interogarea este în căutarea pentru rezultate care lipsesc alt tabel. A selecta o sub osnovne şi selectaţi în partea în care aplicarea. În General, scheletul şi este

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

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

În General, o simpla cerere. Am scris-o pentru 30 SEC de presă ei şi blocat mașina. După o lungă şi cu răbdare de aşteptare pe partea mea sau doar ~ 43 sec . Scuipat lol meu de scor . Pfff Madhouse. Introduceţi în maşină în căutarea CPU în mod normal este încărcată aproape la starea inactiv. Şoc şi uimire. Executaţi interogarea încă din nou acelaşi rezultat. Dracu WTF. Executa interogarea şi explica tot ce am – al doilea câmp este doar secondTextField căutare după text complet Nu index, şi există o tavă modest de aproximativ 35 k linie. Ce să citească – indexul de căutare Full text nu este. Este deja clar problema reală rapid unul

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

Şi lucrurile nap locuri de interogare a luat 0.0005 sec 😀

Fii atent cum ai pus indicii de ele depinde de rata marginală de aplicare.

p. s ansamblul greşită despre situaţia de mai sus nu sunt numai pentru că acesta lipseşte un index, deoarece nu folosind full text search metoda 😀

Consolidată prin Zemanta