/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Query overvejelser for MySQL (hastighed)
Fra : Frowning Freezer


Dato : 14-10-04 10:14

Hejsa

Jeg laver database-drevne website systemer i PHP og MySQL og idet jeg
er i øjeblikket er igang med et stort projekt er hastighed gået hen og
blevet en større og større faktor. Derfor er jeg interesseret i at
vide hvilke principper jeg skal gå ud fra for at lave de mest optimale
queries i MySQL - altså f.eks. hvornår er det bedst at bruge joins
frem for at lave flere opslag? Og hvor mange joins vil det være
"sundt" at lave i en query.

Findes der ikke nogle gode artikler et sted som kan give mig nogle
gode generelle retningslinier, så jeg ikke selv behøver sidde og teste
mig frem hele tiden?

Jeg ville blive kanonglad for enten gode råd eller bare links til
sådanne artikler.


 
 
Stig H. Jacobsen (15-10-2004)
Kommentar
Fra : Stig H. Jacobsen


Dato : 15-10-04 10:35

On Thu, 14 Oct 2004 11:14:00 +0200, Frowning Freezer wrote:

> Derfor er jeg interesseret i at vide hvilke principper jeg skal
> gå ud fra for at lave de mest optimale queries i MySQL - altså
> f.eks. hvornår er det bedst at bruge joins frem for at lave
> flere opslag?

SQL inkluderer en EXPLAIN kommando, som er din ven i denne
sammenhæng. Brug 'explain select x,y,z from blablabla;' for at
se, hvordan databasen har tænkt sig at grave data frem for dig.

(Explain ser dog noget primitiv ud i MySQL, men sådan er MySQL jo
generelt).

> Findes der ikke nogle gode artikler et sted som kan give mig nogle
> gode generelle retningslinier, så jeg ikke selv behøver sidde og teste
> mig frem hele tiden?

Dit spørgsmål er rimeligt generelt SQL (ikke MySQL-specifikt), så
prøv at spørge Google om SQL + tutorial og 'performance', 'tuning', osv.

Og så synes jeg ellers, at du skal kigge på kapitel 7 i den
udmærkede dokumentation, som allerede er med din database.

F.eks. afsnit 7.2.8: "How MySQL Optimizes LEFT JOIN and RIGHT JOIN".

--
Stig
(remove the 'no's to send me mail)

Jesper Sommer (19-10-2004)
Kommentar
Fra : Jesper Sommer


Dato : 19-10-04 16:12

Det beror vist mest på erfaring ... jeg ved ikke hvornår kurven
"knækker" for MySQL men som tommelfinger-regel kan du regne med, at en
enkelt forespørgsel med joins altid er bedre end mange separate
forespørgsler.

Ved den samlede forespørgsel laver databaseserveren i praksis selv flere
forespørgsler, men ved at samle det slipper man for arbejdet med flere
adskilte resultatsæt og åbne cursors, lige som serveren selv kan
udarbejde sin optimeringsplan for udførelsen.

Joins på opslagstabeller koster så godt som ingenting, så dem skal du
aldrig være nervøs for. Det er ikke antallet af joins i sig selv, som er
"det farlige". Det er snarere deres inbyrdes forhold, og udformningen af
dine indexer i basen.

Undgå (hvis muligt) at lave lange serier af indlejrede joins af typen
LEFT OUTER og RIGHT OUTER. Den slags kan trække tænder ud ...

Venligst


- Jesper


Frowning Freezer wrote:
> Hejsa
>
> Jeg laver database-drevne website systemer i PHP og MySQL og idet jeg
> er i øjeblikket er igang med et stort projekt er hastighed gået hen og
> blevet en større og større faktor. Derfor er jeg interesseret i at
> vide hvilke principper jeg skal gå ud fra for at lave de mest optimale
> queries i MySQL - altså f.eks. hvornår er det bedst at bruge joins
> frem for at lave flere opslag? Og hvor mange joins vil det være
> "sundt" at lave i en query.
>
> Findes der ikke nogle gode artikler et sted som kan give mig nogle
> gode generelle retningslinier, så jeg ikke selv behøver sidde og teste
> mig frem hele tiden?
>
> Jeg ville blive kanonglad for enten gode råd eller bare links til
> sådanne artikler.
>

Søg
Reklame
Statistik
Spørgsmål : 177516
Tips : 31968
Nyheder : 719565
Indlæg : 6408626
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste