Serverschonend prüfen ob Wort in Spalte vorhanden ist - mysql

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

  • Serverschonend prüfen ob Wort in Spalte vorhanden ist - mysql

    Hallo.

    Ich habe folgendes Problem.

    Ich habe ein Script geschrieben welches alle Referals einer Seite in eine Datenbank (mysql) einträgt.

    in Suchwörter , Suchbot usw zerlegt und in diese in eine andere Tabelle schreibt.


    Soweit kein problem.

    Nun möchte ich das Script aber nur ausführen lassen wenn das Suchwort noch nicht in der Spalte vorhanden ist.

    Soweit wäre das auch kein ding. Spalte -> in Array auslesen und durchsuchen.



    Da die Datenbank aber leider sehr gross ist ( wird) würde dies den Server unötig Belasten.


    Was gibt es noch für möglichkeietn aus ein Grosen Datenbank - > (Spalte) zu Prüfen ob ein Wort (String) schon vorhanden ist.

  • #2
    WHERE ?
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

    Kommentar


    • #3
      sieh dir mal die where clausel an
      also müßte dann heißen...

      ... where spanlte_1 = 5 AND spanlte_2 LIKE '%test%' OR ....

      Kommentar


      • #4
        Davon abgesehen, dass ich nich weiß was ne spanlte is ( ) weiß ich ja nich, wie deine Datenbankstruktur is. Wenn du immer das gleiche wort prüfen willst, wozu gibts dann mehrere spalten wo das drinne steht? Ist da etwa Redundanz vorhanden?

        Edit: Achso, suchbot.. kA was du da genau speicherst, aber könnte hinkommen mit dem WHERE, jo - außer das das OR am Ende überflüssig is.
        Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

        Kommentar


        • #5
          Hast du alle Suchworte in derselben Spalte oder hast du verschiedene Spalten ?
          Falls alle in dieselbe Spalte kommen, könntest du doch die Spalte als UNIQUE definieren und MySql würde dafür sorgen, dass kein Begriff doppelt eingetragen wird.
          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


          • #6
            Danke für die Antworten.






            Ja es kommen alle Suchwörter in die selbe spalte.
            Das mit unique wäre wohl eine gute Idee.

            an
            "where"

            habe ich auch schon gedacht kann mir aber nicht vorstellen das bei sehr grossen Datenbanken eine vernüftige leistung erziehlt wird.

            Das Scipt wird teileweise bis zu 100x gleichzeitig aufgerufen.

            Kommentar


            • #7
              auf jeden fall schneller als "alles auslesen und in_array() ausführen".

              aber sinnvoller ist die überlegung, was du eigentlich suchst und ob eine anpassung der datenstruktur nicht besser ist, z.b. über eine tabelle mit den keywords oder wie auch immer.

              Kommentar


              • #8
                Hm.


                Im Grunde geht es mir darum auszuwerten welche Suchworte bei google und co verwendet wurden.


                Bei einer gewissen Anzahl neuern Referals soll das script alle neuen Suchworte in einer Datenbank ablegen.

                Damit aber nicht zig tausen gleiche Einträge vorhanden sind will ich eben nur einen Eintrag wenn das Suchwort noch nicht vorhanden ist.


                Da logischerweise das Such wort bzw die suchwörter unterschiedlich sind kann ich das keine andere Prüfung machen.

                Kommentar


                • #9
                  Häh? Versteh nich was dein Problem ist.

                  Vielleicht suchst du ja nach REPLACE INTO

                  Da logischerweise das Such wort bzw die suchwörter unterschiedlich sind kann ich das keine andere Prüfung machen.
                  Unterschiedlich zu was? Keine Andere Prüfung außer welche?
                  Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                  Kommentar


                  • #10
                    diese prozedur (schlüsselwörter herausholen) sollte vielleicht besser jedes mal beim hinzufügen eines neuen eintrags stattfinden.

                    Kommentar


                    • #11
                      diese prozedur (schlüsselwörter herausholen) sollte vielleicht besser jedes mal beim hinzufügen eines neuen eintrags stattfinden.
                      Und genau da ist das Problem!

                      Dies macht ein anderes Script undabhängig von dem welche die Wörter herausfiltert.

                      bzw alle Referals der Gesammten Seiten werden in der Datenbank abgelegt.
                      Ich könnte zwar den Eintrag dort machen aber das System soll ohne veränderungen bleiben.

                      Häh? Versteh nich was dein Problem ist.
                      Eigendlich genau das was ich geschriebn haben.

                      ich versuche es mal anders:

                      Das Script liest bei einem Seitenaufruf eine Datenbank aus und gibt diese Daten dann Fomatiert aus.
                      Im Hintergrund sollen die ausgegeben Daten wiederum in eine andere Datenbank geschrieben werden. (anderer Server)

                      Also zb steht in der Orginal Datenbank:

                      "
                      http://www.irgenwas.de/q=blabla+suchwort+wasanderes
                      "
                      Das script ermittelt das Suchwort bzw die Worte
                      und gibt diese aus.
                      Gleichzeitig soll abgefragt werden ob das Wort bzw die Worte schon in einer Tabelle - bzw. Spalte vorhanden sind. (auf dem anderen Server)
                      Wenn ja dann wird nicht in die Datenbank geschriebn wenn
                      nein schreibe in die Datenbank die neuen Suchworte.
                      So mal vereinfacht dargestellt.

                      Jetzt kommt das Prob:
                      Bei aufruf dieser Seite wird das ganze so um die 500 mal gemacht - da auch 500 Einträge ausgegeben werden sollen.
                      Somit würde bei jeder einzelnen ausgabe Tabelle auf ein neues durchsucht werden.
                      So würde der Server aber früher oder später wohl in die Knie gehen.
                      Deshalb die Frage wie es anderes gehen könnte. -
                      Der Ansatz das dies MYSQL erledigt finde ich gut ( Unique) - aber dann gibt es keien Rückgabewert ob vorhanden oder nicht.


                      Replace Into wäre eine möglichkeit wenn man nur Doppelte Einträge vermeiden will.
                      Ich will aber vermeiden das irgendwas Geschrieben wird wenn vorhanden.

                      So wie ich das sehen wäre allerdings eine Prüfung wohl aufwendiger für den server als den eintrag einfach zu überschreiben.


                      Sehe ich das so richtig?
                      Das 2 Problem ist das ich einen Zähler in dem Script verwende der sich erhöhen soll wenn das Wort schon vorhanden ist.

                      Somit wäre dies dann wohl auch keine Lösung mehr da ich dann ja keine Rückgabewert mehr habe.
                      Zuletzt geändert von schnikemike; 31.08.2007, 17:33.

                      Kommentar


                      • #12
                        Meine Güte, bitte editiere mal alle unnötigen Zeilenumbrüche und vor allem die doppelten aus deinem Post raus - das kann ja kein Mensch lesen x_X

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

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

                        Kommentar


                        • #13
                          Replace Into wäre eine möglichkeit wenn man nur Doppelte Eintäge vermeiden will.

                          Ich will aber vermeiden das irgendwas Geschrieben wird wenn vorhanden.
                          Was als "doppelter Eintrag zählt" kommt darauf an, was als Unique definiert ist.
                          ich glaube

                          Kommentar


                          • #14
                            Das ist doch käse, wozu speicherst du denn die ganze URL überhaupt ab? Speicher doch einfach gleich die Suchwörter ab?
                            Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                            Kommentar


                            • #15
                              Das ist ganz einfach.

                              Es Handelt sich um einn Script welches Statistiken anlegt.

                              Dabei werden die Urls eben mit abgespeichert. MIt dem anderen Script (um welches es sich Handelt) werden sie eben ausgewertet.




                              Warum Doppelt moppeln wenn die Daten eh schon inder datenbank sind?!.
                              Wenn dann müsste das Staistik Script verändert werden.

                              Die soll aber eigendlich nicht geschehen.

                              Na ich denke mal hier wurde jetzt auch schon alles dazu gesagt.

                              Ich werde die Abfrage jetzt vorübergehen mit einem Cronjob erledigen.

                              Kommentar

                              Lädt...
                              X