Avatar billede Slettet bruger
17. august 2011 - 14:06 Der er 5 kommentarer og
1 løsning

Langsom sql forespørgsel på mysql

Hej

Jeg har lidt et af et problem med en sql sætning som svare MEGET langsomt +50 sek.

Det er denne:

SELECT product.* FROM product,productnamealias
where
(product.EAN = '1234')
or
(productnamealias.name = '' and productnamealias.Productid = product.Id) 
limit 0,1

Hvis EAN blive sat til '' og name til et eller andet så køre den hurtigt nok, er begge udfyldt eller kun EAN (som vist) tager den meget lang tid.

Nogle ideer til hvorfor og hvordan det kan rette op?

(der er sat index på begge felter og både tabellen product og productnamealias indeholder omkring 300.000 rækker)

Mvh.

Brian
Avatar billede arne_v Ekspert
17. august 2011 - 15:18 #1
1) "der er sat index på begge felter" - du tester faktisk paa 4 felter.

2) LIMIT uden ORDER BY giver ikke megen mening.
Avatar billede Slettet bruger
17. august 2011 - 15:32 #2
1) "der er sat index på begge felter" - du tester faktisk paa 4 felter.

    - Skal jeg fjerne mine indexs??
Avatar billede arne_v Ekspert
17. august 2011 - 16:21 #3
No. Men maaske skal der index paa de 2 andre ogsaa.
Avatar billede Slettet bruger
17. august 2011 - 16:42 #4
Det virkede desværre ikke hverken med index på de sidste 2 felter eller order by
Avatar billede bauerdata Nybegynder
19. august 2011 - 11:53 #5
Jeg er i tvivl om have du egenligt vil have som resultat,
prøv denne og se om den giver det du forventer.
Du må selv sætte order by og limit.

SELECT product.* FROM product,productnamealias
where product.EAN = '1234'
  and productnamealias.name = ''
  and productnamealias.Productid = product.Id
Avatar billede Slettet bruger
03. oktober 2011 - 11:33 #6
hmm, blev nødtil at lave min database sturktur om.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester