Avatar billede prebenged Nybegynder
17. november 2003 - 13:45 Der er 2 kommentarer

Tidstagning af SQL-kald

Jeg har siddet lidt og leget med hvor hurtigt forskellige SQL-kald går i MySQL via MySQL-Front.

Jeg har fundet ud af at:

SELECT * FROM testa WHERE (kampid = 2 AND spiller1_id = 43) OR (kampid = 1 AND spiller1_id = 1)

Er hurtigere end

SELECT * FROM testa WHERE (kampid = 2 AND spiller1_id = 43)

uanset hvor mange gange jeg prøver....
Er det fordi det fungerer sådan, at den tager al data, og så laver et check på hvad der ikke passer, og derefter sletter det. Og jo mindre der skal slettes, jo hurtigere går det?
Avatar billede fsconsult.dk Nybegynder
17. november 2003 - 14:10 #1
du kan evt. prøve at lave explain på de forskellige kald, for at se hvilke index mysql vælger at benytte til de forskellige kald, og evt. oprette index der er optimeret til de kald du laver.

Prøv f.eks. med "explain SELECT * FROM testa WHERE (kampid = 2 AND spiller1_id = 43) OR (kampid = 1 AND spiller1_id = 1)"
Avatar billede muddi Praktikant
20. november 2003 - 15:04 #2
Du kan prøve at bruge funktionen BENCHMARK. Nu har jeg bare sakset hvad der står i dokumentationen til MySQL. Den tager tid på dine forespørgsler :)


-----------------------------------------------------------------------
BENCHMARK(count,expr)
The BENCHMARK() function executes the expression expr repeatedly count times. It may be used to time how fast MySQL processes the expression. The result value is always 0. The intended use is in the mysql client, which reports query execution times:
mysql> SELECT BENCHMARK(1000000,ENCODE("hello","goodbye"));
+----------------------------------------------+
| BENCHMARK(1000000,ENCODE("hello","goodbye")) |
+----------------------------------------------+
|                                            0 |
+----------------------------------------------+
1 row in set (4.74 sec)

The time reported is elapsed time on the client end, not CPU time on the server end. It may be advisable to execute BENCHMARK() several times, and interpret the result with regard to how heavily loaded the server machine is.
---------------------------------------------------------------------
kilde: http://webdocs.math.univ-rennes1.fr/MySQL/mysql-3.23.52/manual_Miscellaneous_functions.html

/Muddi
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