Re: Erhoehte I/O-Last durch Query
- From: RalfWeb1@xxxxxx
- Date: 12 Mar 2007 13:36:36 -0700
Hallo Christian,
Wie gesagt: Realnamen erhöhen die Chance, gelesen zu werden. "Denk Dir
irgendwas dazu" ist kein Realname (nicht in meiner Welt, jedenfalls).
Google-Groups laesst meines Wissens leider keine Einstellungen machen,
welcher Name angegeben wird.
Standardmaeßig wird die Email-Adresse angezeigt.
Und "SHOW CREATE TABLE" funktioniert bei Dir nicht? Oder warum verrätst
Du dessen Ausgabe nicht.
Ist die Struktur der Tabellen jetzt von Bedeutung? Moechte jetzt
eigentlich nicht die
ganzen Strukturen hier posten.
Bei den kleinen Datenmengen könntest Du das Ganze ohne großen Aufwand
mal lokal installieren und laufen lassen.
Das waere durchaus moeglich, ist aber meiner Meinung nach nicht
notwendig.
Was Du jedenfalls dieser Ausgabe entnehmen kannst: Für Tabelle K wird
der Index firmkeys_idx nicht benutzt. Statt dessen verwendet MySQL eine
temporäre Datei und sortiert diese. Die Dokumentation verrät Dir
vermutlich, warum das so ist. Sie erklärt Dir auch die Ausgabe von
EXPLAIN. Du findest sie bei dev.mysql.com.
Okay, danke. Ich habe mir die dazugehoerigen Kapitel angesehen.
Als einzigen Grund die Indizes nicht zu verwenden habe ich folgendes
gefunden:
"Wenn die Benutzung des Indexes erfordern würde, dass MySQL auf mehr
als 30% der Zeilen in der Tabelle zugreift."
Eventuell ist dies der Fall, kann ich nicht richtig nachvollziehen.
Ich habe mir den Query jetzt noch einmal angeschaut und brauche Hilfe
bei der Umsetzung einer Idee.
Bisher mache ich einen JOIN mit der gesamten FirmenKeys-Tabelle und
diese ist sehr groß.
Im Prinzip muss ich aber nur die Datensaetze JOINEN welche der
Bedingung genuegen.
Das wuerde denke ich eine enorme Einsparung von Zugriffen zur Folge
haben.
Das Problem, ich weiß nicht wie ich das in SQL-Syntax ueberfuehre.
Gibt es sowas in der Art wie das hier?
SELECT Feld FROM Tabelle JOIN (SELECT Feld FROM Tabelle WHERE
Bedingung) AS Alias ON ...
Weil dann koennte ich zuerst nach der Bedingung suchen und viel
weniger DS muessten gejoint werden.
Uebrigens der folgende Query verwendet den Index von Suchwort in
FirmenKeys:
SELECT Firmen_ID FROM FirmenKeys WHERE Suchwort LIKE 'test%'
Diesen muesste ich also irgendwie separat JOINEN.
Das habe ich ausprobiert, aber das scheint nicht so zu
funktionieren(?)
Wie gesagt: Wenn ich eine Firma suche, dann weiß ich doch, dass es eine
Firma ist. Wenn ich ein Stichwort suche, dann weiß ich, dass es ein
Stichwort ist (und eben *nicht* Teil des Firmennamens). Ich halte es für
ungeschickt, nach Suchbegriffen in beliebigen Feldern zu suchen, denn
die wenigsten Suchanfragen sind so unspezifisch.
Ich moechte aber auf der Webseite nicht mehrere Sucheingabe-Felder
anbieten,
sondern nur eines schon wegen der Uebersichtlichkeit. Ich verstehe,
theoretisch
waere es moeglich ueber Radiobuttons auszuwaehlen was fuer eine Art
Suchwort
das ist, aber ich glaube das macht sich nicht so gut im Design. Ich
werde dennoch
mal darueber nachdenken...
MfG, Ralf...
.
- Follow-Ups:
- Re: Erhoehte I/O-Last durch Query
- From: joachim . zobel
- Re: Erhoehte I/O-Last durch Query
- From: Christian Kirsch
- Re: Erhoehte I/O-Last durch Query
- From: RalfWeb1
- Re: Erhoehte I/O-Last durch Query
- References:
- Erhoehte I/O-Last durch Query
- From: RalfWeb1
- Re: Erhoehte I/O-Last durch Query
- From: Christian Kirsch
- Re: Erhoehte I/O-Last durch Query
- From: RalfWeb1
- Re: Erhoehte I/O-Last durch Query
- From: Christian Kirsch
- Erhoehte I/O-Last durch Query
- Prev by Date: Re: Erhoehte I/O-Last durch Query
- Next by Date: Re: Erhoehte I/O-Last durch Query
- Previous by thread: Re: Erhoehte I/O-Last durch Query
- Next by thread: Re: Erhoehte I/O-Last durch Query
- Index(es):