php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.01.2009, 20:55  
Erfahrener Benutzer
 
Registriert seit: 06.11.2008
Beiträge: 208
stayInside befindet sich auf einem aufstrebenden Ast
Standard Index richtig setzen

Hallöchen,

und weiss nun wie man bei einfachen Abfragen die Indexe richtig setzt, aber wie sieht es z. B. bei LEFT JOINS etc. aus?

Meine Query sieht so aus:

PHP-Code:
SELECT 
    
*
FROM
    sys_sitemap 
AS s
LEFT JOIN
    sys_site_x_module 
AS x
ON
    s
.Id x.SiteId
LEFT JOIN
    sys_module 
AS m
ON
    x
.ModuleId m.Id
WHERE
    s
.Alias 'start' 
Sollte ich nun z. B. für s.Id, x.SiteId, x.ModuleId, m.ID und s.Alias ein Index setzen? Das * nun nicht beachten, das mache ich immer erst zum Schluss, wenn feststeht welche Felder ich wirklich brauche.

Benny
stayInside ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.01.2009, 20:57  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.846
HPR1974 wird schon bald berühmt werden
Standard

wo willste denn bei der Abfrage einen index setzen?
bzw was verstehst Du unter einem index?
HPR1974 ist offline   Mit Zitat antworten
Alt 28.01.2009, 21:02  
Erfahrener Benutzer
 
Registriert seit: 06.11.2008
Beiträge: 208
stayInside befindet sich auf einem aufstrebenden Ast
Standard

Unter Index versteh ich die Indizes, sprich den Index davon. Ich habe sonst immer ein Index über 1 Feld gelegt, welcher per WHERE geholt wird. Und die ON bei den LEFT JOINS versteh ich wie WHERE.
stayInside ist offline   Mit Zitat antworten
Alt 28.01.2009, 21:28  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Hi,
theoretisch brauchst du gar keine Indexstrukturen erstellen. Macht aber natürlich Sinn.

Gut, also sinnvoll sind Indexe nur auf Spalten nach denen sehr oft gesucht wird. Hast du zum Beispiel nur diesen Query der nach s.Alias = 'start' suchst brauchst du auf die Spalte Alias keinen Index setzen.

Sinn macht es meistens auf die ID Spalten einen Index zu legen. In vielen Applikations identifizierst du einen Datensatz über die ID, so machst du es ja auch s.Id, x.SiteId, m.Id.

Ich würde in diesen Tabellen bei den IDs jeweils einen Index anlegen, den Rest würde ich lassen.
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline   Mit Zitat antworten
Alt 29.01.2009, 11:09  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von Flor1an Beitrag anzeigen
Ich würde in diesen Tabellen bei den IDs jeweils einen Index anlegen, den Rest würde ich lassen.
Da ist doch bereits ein index wenn das auto-increment Felder sind. Da ist doch meistens schon ein Primärer Key drauf?!
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline   Mit Zitat antworten
Alt 29.01.2009, 11:46  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von Flor1an Beitrag anzeigen
Gut, also sinnvoll sind Indexe nur auf Spalten nach denen sehr oft gesucht wird. Hast du zum Beispiel nur diesen Query der nach s.Alias = 'start' suchst brauchst du auf die Spalte Alias keinen Index setzen.
Das würde ich eher als:
"Es kommt darauf an, was Du optimieren willst. Die Datenbankgröße, das Einfügen oder das Suchen/Auslesen"
ausdrücken wollen
Wenn Du also sehr häufig/ständig neue Datensätze in sys_sitemap einfügst oder `alias` von vielen Datensätzen änderst, aber die gezeigte Abfrage nur alle paar Tage per Hand ausführst (und die Dauer im Rahmen egal ist), lohnt sich der Index nur für diese Abfrage vielleicht nicht.
David ist offline   Mit Zitat antworten
Alt 30.01.2009, 09:31  
Erfahrener Benutzer
 
Registriert seit: 06.11.2008
Beiträge: 208
stayInside befindet sich auf einem aufstrebenden Ast
Standard

Also eingetragen wird nur beim Aufsetzten sehr viel, später kaum noch. Also wenn dann sollte es auf das Auslesen optimiert werden. Da hab ich allerdings noch ein Cache zwischen, sprich, wenn die Sitemap erstmal fertig ist, steht sie in einer File. Da ich aber geplant hatte die Cache regelmäßig zu leeren, sollte es beim refresh dennoch recht fix gehen
stayInside ist offline   Mit Zitat antworten
Alt 30.01.2009, 09:43  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Regelmäßig heißt stündlich, täglich, wöchentlich?

Du kannst bei MySQL die Länge eines Index über eine Zeichenkette angeben (bei anderen DBMS auch).
Code:
CREATE INDEX idxAlias ON sys_sitemap(`alias`(3))
bezieht beispielsweise nur die ersten drei Zeichen aus `alias` in den Index ein. Das reicht aus, um 'start' von 'stop' zu unterscheiden.
David ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
php datei löschen djscaleo PHP Tipps 2008 21 14.11.2008 15:47
Array Felder richtig setzen hoctar PHP Tipps 2008 12 17.10.2008 17:28
Undefined variable Undefined property: block xxJJxx PHP Tipps 2008 16 05.08.2008 15:30
Notice: Undefined index Kein Genie PHP Tipps 2008 5 23.04.2008 17:40
Prototype Ajax Array Datenmüll notyyy HTML, Usability und Barrierefreiheit 2 08.04.2008 10:57
Array index updaten obi PHP Tipps 2008 4 28.11.2007 15:08
Index vom Array zurücksetzen kampfnickel PHP Tipps 2007 6 08.01.2007 17:24
Index Setzen Fatal Error Datenbanken 0 05.10.2006 15:32
For Schleife richtig setzen PHP Tipps 2005-2 1 23.10.2005 03:16
Cookies richtig setzen und ersetzen Bonaparte PHP Tipps 2005-2 6 30.08.2005 14:51
mysql_num_row unde Index bleibt trotzdem 0 in der DB nieselfriem PHP Tipps 2005-2 7 30.07.2005 17:30
2 verschachtelte while Schleifen. Großes Performanceproblem Datenbanken 3 30.05.2005 12:52
Chmods richtig setzen Madden PHP Tipps 2005 8 04.04.2005 06:48
Undefined index PHP Tipps 2005 5 05.02.2005 14:57
memory_limit wie funktioniert es richtig 8m auf 16 m setzen PHP Tipps 2005 1 25.01.2005 11:55

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
copyright richtig setzen, mysql index richtig setzen, index richtig setzen, datenbank index setzen, index setzen php, datenbank indizes richtig setzen, index setzen datenbank, mysql indizes richtig setzen, php index setzen, copyright richtig, indizes richtig setzen, datenbank indizes setzen, informix datenbank index richtig einsetzen, mysql index richtig anlegen, datenbank index richtig anlegen, indexe setzten datenbank, index datenbank setzen, datenbank indizies setzen, indizies setzen, index richtig

Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum