[MySQL] Optimalisatie 'between' query

Pagina: 1
Acties:

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 19-08 15:22

Willem2

Ω is futile

Topicstarter
Ik weet dat optimalisatie van MySQL queries al vaker voorbij is gekomen. Ik heb ernaar gezocht, in de manual zitten neuzen, maar ik kom er niet uit!


Ik heb een tabel met 52.000 records. Elk record heeft 3 velden.

De query ziet er zo uit:

code:
1
2
SELECT COUNTRY_CODE FROM country_db 
WHERE '$ip_number' BETWEEN IP_FROM AND IP_TO



type velden:

IP_FROM double
IP_TO double
COUNTRY_CODE char(2)

Probleem is dat hij hier zo'n 2 seconden over doet. Ik heb al vanalles geprobeerd met indexeren, maar veel meer dan 0.1sec minder eruit persen lukt niet...
Ik denk dat het komt door de 'between' statement, maar weet dit niet zeker.

Kan dit sneller, of ben ik gewoon gebonden door de grootte van de tabel en type query?

[ Voor 3% gewijzigd door Willem2 op 12-03-2003 20:23 ]

en nee, ik houd niet van voetbal... :)


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Misschien is MySQL een beetje dom en wil ie je niet goed laten performen.

Maar had je een gecombineerde index op ip_from én ip_to geprobeerd?
Of juist twee losse op ip_from en ip_to.
Verder kan je natuurlijk ook nog de standaard ip_from < $ip_number AND $ip_number < IP_TO proberen.

(icm die indices trouwens)

[ Voor 6% gewijzigd door ACM op 12-03-2003 21:17 ]


  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Heb je index'en aangemaakt op die kolommen? Dat wil nog wel eens helpen met het verkorten van je tijd...

Ook Knor is aangestoken met het ligfietsvirus!


  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 19-08 15:22

Willem2

Ω is futile

Topicstarter
Indices maakten helemaal niets uit, maarrrr, die query met < AND < wordt ie 10x sneller door! :-) zit nu rond de 0.2 seconden!
Daarna helpen indices nog 0.01 seconden; als dat getal nog betrouwbaar is...

Enniewee, de beste fix blijkt wederom de meest voor de hand liggende te zijn! :)

en nee, ik houd niet van voetbal... :)


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

mja, blijkbaar is mysql niet zo goed in staat die between goed naar de indices toe te optimaliseren, terwijl ie dat wel met de and kan.
Beetje jammer is dat :)