Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
like 'a%', geht das auch anders und schneller [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
like 'a%', geht das auch anders und schneller


 
Thommy
07-05-2002, 16:28 
 
hallo leute,

ich bastele an einer abfrage, welche personen aus der Datenbank holt welche einen nachnamen mit anfangsbuchstaben (z.B.) 'c' besitzen

bist jetzt mache ich es so

SELECT nachname FROM tabelle WHERE nachname LIKE 'c%'

Gibts da noch ne andere Möglichkeit, welche vieleicht schneller geht ??


Riesen Dankeschön im vorraus


thommy

 
Titus
07-05-2002, 17:15 
 
nicht ohne die Normierung zu mißachten.

Du kannst den Anfangsbuchstaben zusätzlich in einem CHAR(1)-Feld speichern, aber dann musst du bei jeder Änderung beide Felder bearbeiten.
Setz einfach einen KEY auf die Nachnamen-Spalte, das ist schnell genug.

 
Thommy
07-05-2002, 18:37 
 
danke,

ich werd mir mal überlegen, ob ichs vieleicht mit ner extra spalte für den anfangsbuchstaben mache. das ist jedenfalls ne gute idee!!

gruss

thommy

 
Titus
09-05-2002, 19:03 
 
Nein ist es nicht. Der Aufwand lohnt nicht.
Leg einfach einen Index auf das Feld "Nachname", das hat den gleichen Effekt.

 
Thommy
09-05-2002, 19:17 
 
ok, danke dir

 
Ralf28
12-05-2002, 21:22 
 
Die Abfrage ist schon in Ordnung.
Einen sinnlosen Primary Key kann ich dir nicht empfehlen. Denn der würde eher zu Performanceverlusten führen. Bei sehr grossen Datenmengen hilft wirklich nur noch ein Index. Aber auch da:Sei Sparsam mit Indexen in einem Table, den zu viele können sich auch gegenteilig auswirken.
Teste es einfach.
Gruß Ralf

 
Titus
13-05-2002, 10:57 
 
Die "Geschwindigkeitsprobleme" die du ansprichst, ergeben sich hauptsächlich beim Einfügen; aber mysql ist ausreichend optimiert, dass eine Tabelle mit 5 Indizies + primary key mit einigen Tausend Neueinträgen täglich keine Probleme macht - ich hab´s persönlich ausprobiert (allerdings auf einem exzellent eingerichteten Linux-Server).
Da auf den meisten Datenbanken aber eher gesucht oder aktualisiert als eingetragen wird, sind Indizes an den richtigen Stellen schon wichtig. Und hier geht´s ja auch um eine Suche ...

Aber in einem halben Punkt hast du recht: Unnötige Indizes (also auf Felder, die nicht oder nur selten als Suchschlüssel benutzt werden) sollte man vermeiden!

Ein Primary Key (es kann nur einen geben! ;)) ist niemals sinnlos - damit kann die Performance nur verbessert werden!

 
Ralf28
13-05-2002, 13:36 
 
Hallo Titus...
Ich habe mich etwas unklar bezüglich des Primary Key ausgedrückt.
Die Rede war natürlich von einem PK der aus mehreren Teilschlüsseln besteht.
In diesem Fall bestünde der PK aus der ID und dem Nachnamen. Das wäre ja wohl wirklich ein Sinnloser PK, da die ID bereits jedes Tupel eindeutig indentifiziert.
Beste Grüsse Ralf


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:01 Uhr.