FAQ |
Kalender |
|
![]() |
#1 | |||
|
||||
Mycket flitig postare
|
Det är en grej som jag tycker är mysko. Men det blir väl så när man har lärt sig av vad folk har sagt och inte ifrån manualen...
Jag försöker alltid undvika att ha index som använder sig av fler än ett fält, främst för att jag aldrig har haft stenkoll på hur det påverkar mina sql-frågor vid olika situationer. Men nu vore det skönt att reda ut saker, för enligt explain fungerar det inte som jag har trott att den har gjort. Låt säga att vi har ett index med två fält (f1 och f2). Då har jag "fått lära mig" att detta index bara används i en query som använder båda fälten för att ta fram resultatet, alltså t.ex "select * from tabell where f1=1 and f2 > f1". Men enligt explain på "select * from tabell where f1=1" så används mitt index här, trots att bara det ena fältet finns med i frågan. Däremot, när jag kör explain på "select * from tabell where f2=1" så används inte mitt index, vilket gjorde mig mycket förvånad. Om jag använder båda fälten i min fråga så används mitt index också, precis som det borde (oavsett vilken ordning de skrivs i... om det nu kan göra skillnad normalt) Jag förstår inte varför mitt index inte fungerar om jag använder bara fält2... Mitt index ser ut såhär PRIMARY (f1, f2) Jag förstår inte, och jag är för trött för att läsa manualen och därför hoppas på att få vakna och sedan få äta frukost till ett bra svar här. ![]() Tack. |
|||
![]() |
![]() |
Svara |
|
|