like 'a%', geht das auch anders und schneller

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • like 'a%', geht das auch anders und schneller

    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
    www.unister.de

    what students want!

  • #2
    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.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      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
      www.unister.de

      what students want!

      Kommentar


      • #4
        Nein ist es nicht. Der Aufwand lohnt nicht.
        Leg einfach einen Index auf das Feld "Nachname", das hat den gleichen Effekt.
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          ok, danke dir
          www.unister.de

          what students want!

          Kommentar


          • #6
            Re: like 'a%', geht das auch anders und schneller

            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

            Kommentar


            • #7
              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!
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #8
                Primary Key

                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

                Kommentar

                Lädt...
                X