Index über das Ergebnis einer Funktion über eine Spalte?

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

  • Index über das Ergebnis einer Funktion über eine Spalte?

    Der Titel sagt eigentlich schon die gesamte Frage aus:
    Ist es möglich einen Index, z.B. über
    LOWER(spalte)
    zu legen, sodass wenn man Abruft
    WHERE LOWER(spalte) = "test"
    MySQL (achja, es geht um MySQL ^^), nur auf den Index zugreifen braucht? (gilt auch für andere Funktionen)

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

  • #2
    was willst du? mach mal nen vernünftigen satz!

    BTW: hastes mal ausprobiert?

    Kommentar


    • #3
      Ist es möglich in MySQL einen Index über das Ergebnis einer Funktion zu legen, sodass er beim Abruft mit derselben Funktion und denselben Parametern in einer Where-clause nur diesen Index zu nutzen braucht, anstelle einer Berechnung des Ergebnisses. (besser?)

      nein, ausprobiert hab ich's nicht, wüsst auch ehrlich gesagt nicht so recht wie ¬_¬

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        Bin immer noch nicht sicher ob ich dich verstanden habe. Aber nen Index wirst du da nicht drauf setzen können. Das Ergebnis (return) der Funktion ist ja so gesehen nur temporär.

        Kommentar


        • #5
          Original geschrieben von TobiaZ
          Bin immer noch nicht sicher ob ich dich verstanden habe. Aber nen Index wirst du da nicht drauf setzen können. Das Ergebnis (return) der Funktion ist ja so gesehen nur temporär.
          Ich denke schon, dass du mich verstanden hast ^^
          ich hab darüber auch (noch) nichts gefunden, was ich wohl auch nicht mehr tun werden, aber schade ist es schon, das wäre eine sehr schöne Methode das komplette Skript rasend zu verbessern....

          Gibt's denn irgendwie ne andere Möglichkeit solche Sachen zu cachen?

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Selbstverständlich. Immer wenn in dieser Spalte etwas geändert wird, schreibst du die zu cachenden Daten in eine zweite Tabelle. Diese kann dann auch den Index haben, den du dir eigentlich auf der ersten wünschst.
            Aber ob das dein Script verbessert, hängt stark von den Daten ab, ich befürchte der Effekt wäre gering oder sogar negativ. Versuchs halt mal.

            Btw. meine ich mich erinnern zu können, das DB2 solche Indizes kennt. Wie es mit Oracle oder einem OpenSourceDBMS aussieht weiß ich nicht. Will sagen, schau auch mal auf andere DB-Software, wenns wirklich so nötig ist.

            Kommentar


            • #7
              @onemorenerd
              OffTopic:
              Sag mal musst du nie schlafen oder arbeitest du Schicht ?


              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                OffTopic:
                Sag mal musst du nie schlafen oder arbeitest du Schicht?
                Heute wars zuviel Kaffee, aber meist ist es Arbeit im weiteren Sinne.
                Was treibt dich denn um 4 hier her?

                Kommentar


                • #9
                  Was treibt dich denn um 4 hier her?
                  OffTopic:
                  Die Schichtarbeit...
                  Und jetzt geht's dann baaaaald nach Hause zum Pennen


                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Original geschrieben von onemorenerd
                    Selbstverständlich. Immer wenn in dieser Spalte etwas geändert wird, schreibst du die zu cachenden Daten in eine zweite Tabelle. Diese kann dann auch den Index haben, den du dir eigentlich auf der ersten wünschst.
                    Aber ob das dein Script verbessert, hängt stark von den Daten ab, ich befürchte der Effekt wäre gering oder sogar negativ. Versuchs halt mal.
                    Die Abfrage lautet eigentlich komplett
                    WHERE SUBSTRING_INDEX(LOWER(Spalte), "/", 1) = "something"
                    und das Ding muss bei _jedem_ Seitenaufruf gemacht werden, ich denke es würde das Skript mit Sicherheit wesentlich verschnellern...
                    Aber das mit der zweiten Tabelle hört sich auch gut an, werd gleich mal gucken, was ich da ändern kann (so kann es nicht bleiben...)

                    Btw. meine ich mich erinnern zu können, das DB2 solche Indizes kennt. Wie es mit Oracle oder einem OpenSourceDBMS aussieht weiß ich nicht. Will sagen, schau auch mal auf andere DB-Software, wenns wirklich so nötig ist.
                    Leider hab ich nur MySQL zur Verfügung, ansonsten würd ich mir das gerne angucken ^^

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      Original geschrieben von ghostgambler
                      Aber das mit der zweiten Tabelle hört sich auch gut an
                      zweite tabelle?
                      ich würde eher sagen, eine zusätzliche spalte, wo du dir das ergebnis der funktion beim INSERT oder UPDATE von datensätzen reinschreibst.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Original geschrieben von wahsaga
                        zweite tabelle?
                        ich würde eher sagen, eine zusätzliche spalte, wo du dir das ergebnis der funktion beim INSERT oder UPDATE von datensätzen reinschreibst.
                        Wurde mir auch grade auch von anderer Stelle an's Herz gelegt XD

                        Mitlerweile bin ich etwas in Richtung Heap-Tabelle als cache abgeschwenkt, vielleicht lässt sich damit der komplette Query in der Ausführungsanzahl runtersetzen, denn ob jetzt 15 Minuten ne veraltete Tabelle benutzt wird, ist nicht weiter schlimm!

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar

                        Lädt...
                        X