Image representing MySQL as depicted in CrunchBase

Jakiś czas temu pisałem o MySQL Wyszukiwanie pełnotekstowe 🙂 dzisiaj miałem bardzo ciekawe doświadczenie z jedną prośbą. Ogólnie rzecz biorąc, kwerenda wyszukuje wyniki, których brakuje w innej tabeli. Jeden podstawowy Wybierz i jeden sub wybierz w części WHERE kwerendy. Zasadniczo szkielet jest

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

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

Zasadniczo proste zapytanie. Napisałem go dla 30 Sec. Upuszczam go i maszynę. Po długim i cierpliwie czekam z mojej strony lub dokładnie ~ 43 sek. . Mój pluć wynik lol . Pfff Szaleństwo. Wchodzę na maszynę oglądając procesor jest zwykle ładowany prawie w stanie bezczynności. Szok i przerażenie. Uruchamiam kwerendę ponownie ten sam wynik. Wiercone WTF. Biegnę wyjaśnić wniosek i wszystko świeci – Drugie pole secondTextField jest tylko Wyszukiwanie pełnotekstowe Bez indeksu, I tam taca jest skromna od około 35 k zamówienia. Kogo czytać – Wyszukiwanie pełnotekstowe nie jest indeksem. Czy teraz jest jasne, że problem szybki numerek

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

I rzeczy przyszedł do miejsc Query wziął 0.0005 😀 SEC

Należy uważać, jak umieścić indeksy na nich zależy marginalnej prędkości aplikacji.

P. s ogólnie się mylę co do powyższej sytuacji nie tylko dlatego, że brakuje indeksu, ponieważ nie korzysta z metody wyszukiwania pełnego tekstu 😀

Ulepszony przez Zemanta