mySQL: SELECT, Index, etc.

brainyy

Grünschnabel
Hi,

es geht immernoch um das Problem aus diesem Thread:
http://www.tutorials.de/tutorials220368.html

Nun fange ich aber mal ganz einfach und von vorne an.
Ich habe folgende Tabelle:
Code:
CREATE TABLE xxx (
`id` int( 11 ) unsigned NOT NULL AUTO_INCREMENT ,
`start_ip` int( 10 ) unsigned NOT NULL default '0',
`end_ip` int( 10 ) unsigned NOT NULL default '0',
PRIMARY KEY ( `id` ) 
) TYPE = MYISAM ;

Gefüllt ist diese mit 769.217 Einträgen.

Die Querys sehen so aus:
Code:
SELECT * FROM `test` WHERE start_ip < [INTWERT] AND end_ip > [INTWERT]
bzw.
SELECT * FROM `test` WHERE [INTWERT] BETWEEN start_ip AND end_ip

Ich teste jetzt mit 3 Int Werten... Einmal vom 1. Eintrag, dann vom 370000. und vom 769217.

Hier die Antwortzeiten:

0,42 Sekunden (SELECT * FROM `test` WHERE start_ip < 264482817 AND end_ip > 264482817;)
0,42 Sekunden (SELECT * FROM `test` WHERE 264482817 BETWEEN start_ip AND end_ip;)

0,49 Sekunden (SELECT * FROM `test` WHERE start_ip < 2609201921 AND end_ip > 2609201921;)
0,42 Sekunden (SELECT * FROM `test` WHERE 2609201921 BETWEEN start_ip AND end_ip;)

0,56 Sekunden (SELECT * FROM `test` WHERE start_ip < 3657432833 AND end_ip > 3657432833;)
0,43 Sekunden (SELECT * FROM `test` WHERE 3657432833 BETWEEN start_ip AND end_ip;)


Mit einem Index auf start_ip und einem Index auf end_ip:

0,00 Sekunden (SELECT * FROM `test` WHERE start_ip < 264482817 AND end_ip > 264482817;)

0,47 Sekunden (SELECT * FROM `test` WHERE start_ip < 2609201921 AND end_ip > 2609201921;)

0,00 Sekunden (SELECT * FROM `test` WHERE start_ip < 3657432833 AND end_ip > 3657432833;)


Lässt sich da jetzt noch was optimieren? Bräuchte eigentlich noch eine schnellere Antwortszeit..
 
Zurück