Citat:
Ursprungligen postat av objx
Vad brukar vara det vanligaste sättet att lösa den här typen av problem då?
En idé jag hade var att sätta ett index på de tre kolumner som förekommer flest i villkorssatser, och alltid placera dessa villkor först i queryn.
T.ex:
Om jag skapar ett index för kolumnerna boarea och pris, och jag har en query som ser ut på följande sätt:
SELECT ... FROM ... WHERE boarea *50 *pris *1500000 *rum *3 ... övriga villkor.
Kommer MySQL då att dra nytta av detta index för att begränsa resultatet innan de
|
Ja , om inte queryn i övrigt är galen kommer den det..
Citat:
Ursprungligen postat av objx
Säg att det är 8 kolumner ur tabellen som används i 80% av sökningarna.
Måste man bygga upp ett index för varje tänkbar villkorskombination då för att MySQL skall kunna använda ett index vid varje query?
D.v.s:
index1: land, stad, boarea, pris
index2: land, stad, pris
index3: land, boarea, pris
Det låter ju onekligen rätt rörigt.
|
Nej det är inte nödvändigt , tex index2 kan vara onödigt då index1 delvis kommer användas tex vid
SELECT land=x AND stad=x AND pris=x
viket nog ger bra prestanda då endast en scan på "pris" ur resultatet