AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Sinnvolle einsatz von Indexe bei MYSQL

Sinnvolle einsatz von Indexe bei MYSQL

Ein Thema von Karstadt · begonnen am 17. Feb 2006 · letzter Beitrag vom 22. Feb 2006
Antwort Antwort
Seite 2 von 2     12
delphilevi

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

Re: Sinnvolle einsatz von Indexe bei MYSQL

  Alt 21. Feb 2006, 19:51
ob und wie viele indices erzeugt werden sollten, hängt auch von dem verhältnis select-abfragen zu update und insert abfragen ab.

bei mysql datenbanken schaue dir mal das mysql-verzeichnis an.
pro datenbank ein verzeichnis und pro
tabelle (z.B. tab1) gibt es eine tab1.frm, tab1.ind und tab1.dta (oder so ähnlich die letzte mysql ist schon 13 monate her):

nach jedem update, insert wird letztlich die index-Datei neu aufgebaut.
je höher die anzahl der indices, desto größer die index-Datei und umso langsamer insert und update.

den größten geschwindigkeits-zuwachs bekommst du durch serverseitiges ausführen der sql-anweisungen.
Begrabt mein Hirn an der Biegung des Flusses
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#12

Re: Sinnvolle einsatz von Indexe bei MYSQL

  Alt 21. Feb 2006, 19:59
Kurz gesagt. Besser Select eingrenzen als Indexe benutzen (oder Select mit Indexen). Wollstest du das sagen?
  Mit Zitat antworten Zitat
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
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.902 Beiträge
 
Delphi 2010 Professional
 
#14

Re: Sinnvolle einsatz von Indexe bei MYSQL

  Alt 22. Feb 2006, 10:10
Was ist denn an den Infos in dem und deinen anderen Threads so schwer zu verstehen?
Zum 5000-sten Mal: Ein Index muss nunmal aus deinen Daten generiert werden und er beschleunigt auch nur gezielte Zugriffe (Filtern, Gruppieren, Sortieren). Jeglicher schreibender Zugriff bedeutet, dass der Index invalid und in manchen DBs sogar sofort neu berechnet werden muss.
Kann doch nicht so schwer sein, daraus Schlüsse ziehen zu können.
Zitat von Karstadt:
Kurz gesagt. Besser Select eingrenzen als Indexe benutzen (oder Select mit Indexen). Wollstest du das sagen?
Hmpf? Was soll man da noch sagen...

Du kannst doch nicht anfangen ein Programm zu schreiben ohne die mit den verwendeten Technologien wenigstens _ansatzweise_ vertraut zu machen.
*Sich langsam wie in einer Excel/Access-Mailinglist vorkommt *
Robert Giesecke
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf