phpbar.de logo

Mailinglisten-Archive

mehr Geschwindigkeit durch andere formulierung ?

mehr Geschwindigkeit durch andere formulierung ?

Cybot 4t2.com-mysql at tekkno4u.de
Mit Jan 22 23:45:59 CET 2003



Henning Jödden wrote:
> nabend zusammen,
> 
> 
>>>>>1 row in set (5.18 sec)
> 
> 
>>>>das alles und noch viel mehr:
>>>>http://www.mysql.com/doc/en/Query_Speed.html
> 
> 
>>Also, das hat's auf jeden Fall gebracht! Mit den richtigen Indexes hab
>>ich Ihn jetzt auf 1.61 sek.! *tusch*
> 
> 
> Mensch!
> Optimieren macht spass, der Kampf gegen die Uhr hat irgendwie
> was von sport ;)
> Aber es kommen viele Fragen auf...
> 
> nach blödheit absteigend sortiert:
> 
> 1. Beschleunigen GROUP BY und/oder ORDER BY auch Abfragen oder wirken
> sie sich nur auf das Resultset aus ?

order by werden sie wohl eher verlangsamen, weil ja mehr arbeit, hier 
sollte man drauf achten das wenn man immer mit der gleichen sortierung 
aus einer tabelle auliest dann diese tabellen bereits in der db nach 
dieser spalter sortiert (ALTER TABLE ... ORDER BY ...)

group by wird wohl auch zeit kosten, aber wenn mans braucht braucht mans 
nun mal, wenn man es hinterher im programm macht kostet es ja auch 
wieder zeit...

> 
> 2. Wenn der PK 2 spalten umfasst dann sind diese ja dadurch sowieso
> UNIQUE (in der Kombination), ein zusätzlicher index über diese
> Spaltenkombination (UNIQUE oder INDEX) ist quark oder nicht ?

jo is quark,
PRIMARY ist immer auch UNIQUE und INDIZIERT
UNIQUE ist immer auch INDIZIERT
also: PRIMARY > UNIQUE > INDEX

> 
> 3. Was ist das Bewertungskriterium für die Reihenfolge bei Joins ?
> Sollten die Tabellen wo auf mehr Spalten zugegriffen wird immer "links" stehen ?

das hängt von deinem WHERE ab! an erster stelle sollte immer die 
tabellen mit den meißten WHERE-bedingungen stehen


> 
> 4. Spielt die Reihenfolge der spalten eine Rolle wenn ich eine kombination als index anlege ?

auf jeden fall!
index (id,name)

select id,name where name = VAL => nutzt den index nicht!
select id,name where id = VAL AND name = VAL => nutzt den index!
select id,name where id = VAL => nutzt den index!


> 
> und...
> zitiere Sven Mueller:
> 
>>Aber Vorsicht: Ich kann mich noch vage erinnern, dass Sybase und Oracle die
>>Ausdrücke in zueinander umgekehrter Reihenfolge auswerteten (der eine die
>>vorne stehenden Terme zuerst, der andere die hinten Stehenden). Ich weiss
>>nicht, in welcher Reihenfolge MySql auswertet, ich vermute aber von links
>>nach rechts.
> 
> 
> wenn das noch jemand wüsste wär auch echt super! ;)
> 
> dank & grüsse,
>  Henning
>  
> --
> endlich zuhause...
> 

-- 
Sebastian Mendel

info at sebastianmendel.de

www.sebastianmendel.de
www.tekkno4u.de
www.nofetish.com

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive