Einzelnen Beitrag anzeigen

delphilevi

Registriert seit: 10. Jan 2006
Ort: Bad Bramstedt
11 Beiträge
 
#13

Re: Sinnvolle einsatz von Indexe bei MYSQL

  Alt 22. Feb 2006, 09:58
kurz kann ich nicht

eine ablaufbeschreibung:

tab1
f1 f2 ohne index
1 20060222
2 20060221

tab1
f1 f2 index auf f2
1 20060222 position 2 (immer zahlen)
2 20060221 position 1

select * from tab1 order by f2

im ersten fall verarbeitet die mysql die abfrage indem sie 20060222 <= 20060221 prueft
im zweiten fall läuft die prüfung auf den index --> sehr viel schneller als 1 insbesondere wenn f2 = langer string

aber:
update tab1 set f2=20060223 where f1=2 ist im ersten fall schneller da es keinen index zum reorganisieren gibt.

ach ja: ist die select abfrage komplex (viele funktionen) kann es passieren, daß die indices nicht verwendet werden: select * from tab1 order by datediff(f2,20060101)/365

noch 'n tipp:
gut: select * from tab1 where (grosse einschraenkung) and (weniger grosse einschraenkung)
schlecht: umgekehrt

gut: insert into temp (select * from riesig where (einfach zu berechnen))
select * from temp where (komplex)
schlecht: select * from riesig where (komplex) and (einfach zu berechnen)

die index-datei ist vereinfacht dargestellt.
o'reilly mysql hat mir sehr geholfen.

hilfe bei index-entscheidungen: tabellenstruktur und liste mit sql-statements, groesse der tabellen
und verhaeltnis von select zu insert/update posten
Begrabt mein Hirn an der Biegung des Flusses
  Mit Zitat antworten Zitat