Friedhelm: 2 Tabellen verbinden?

Hallo,

wie kann ich 2 Tabellen gleicher Struktur miteinander verbinden.

Also, es geht darum, dass ich eine Artikeltabelle habe, in die ab und an neue Artikel eingespielt werden.

Deshalb möchte ich die einzuspielenden Artikel in eine temporäre 2. Tabelle einspielen, dann kontrollieren und hiernach die komplette Tabelle 2 an die Tabelle 1 anhängen.

Gibt es dafür einen besonders performanten Kniff?

VG, Fred

  1. Deshalb möchte ich die einzuspielenden Artikel in eine temporäre 2. Tabelle einspielen, dann kontrollieren und hiernach die komplette Tabelle 2 an die Tabelle 1 anhängen.

    INSERT INTO tabelle1 SELECT field1, field2 FROM tabelle2

    Gibt es dafür einen besonders performanten Kniff?

    An der Performance wirst du imho nicht groß drehen können.

    Gruß,
    jumini

    1. Deshalb möchte ich die einzuspielenden Artikel in eine temporäre 2. Tabelle einspielen, dann kontrollieren und hiernach die komplette Tabelle 2 an die Tabelle 1 anhängen.

      INSERT INTO tabelle1 SELECT field1, field2 FROM tabelle2

      Hi jumini,

      geht auch SELECT * FROM tabelle2 ?

      Danke und Grüße, Fred

      1. geht auch SELECT * FROM tabelle2 ?

        SELECT INTO wäre auch denkbar - es kommt auf das DMBS an.

        1. SELECT INTO wäre auch denkbar - es kommt auf das DMBS an.

          MySQL 5

          Gruß, Fred

      2. geht auch SELECT * FROM tabelle2 ?

        Sofern die Felder wirklich identisch sind, sehe ich da kein Problem. Aber nur ein Test beweist dir, dass ich nicht lüge ;)

        Gruß,
        jumini

  2. Gibt es dafür einen besonders performanten Kniff?

    Man packt alles in eine Tabelle und verpasst den noch zu kontrollierenden Artikeln ein Flag welches man bei bedarf nur ändern muss - ob das nun Artikel im Sinne eines Shops sind oder Artikel im Sinne eines CMS/Blog oder wie auch immer spielt dabei keine Rolle.

    1. »»» Gibt es dafür einen besonders performanten Kniff?

      Man packt alles in eine Tabelle und verpasst den noch zu kontrollierenden Artikeln ein Flag welches man bei bedarf nur ändern muss - ob das nun Artikel im Sinne eines Shops sind oder Artikel im Sinne eines CMS/Blog oder wie auch immer spielt dabei keine Rolle.

      Das ist aber nicht performanter, sondern Benutzerfreundlicher. Für die Performance der Abfragen sind kleine Tabellen ausschlaggebend. Ich behaupte jetzt einfach mal, dass die seltenen Übertragungen der Tabelle eine unverhältnismäßig kleinere Rechenzeit in Anspruch nimmt und möchte Friedhelm dazu raten, bei zwei Tabellen zu bleiben - egal ob es nun um ein kleines News-Archiv geht, oder riesige Artikel-Tabellen.

      Gruß
      jumini

      1. »»» Gibt es dafür einen besonders performanten Kniff?

        Man packt alles in eine Tabelle und verpasst den noch zu kontrollierenden Artikeln ein Flag welches man bei bedarf nur ändern muss - ob das nun Artikel im Sinne eines Shops sind oder Artikel im Sinne eines CMS/Blog oder wie auch immer spielt dabei keine Rolle.

        Das ist aber nicht performanter, sondern Benutzerfreundlicher.

        Zwei Tabellen die redundanzen zueinander erzeugen sollen performanter sein?

        Für die Performance der Abfragen sind kleine Tabellen ausschlaggebend.

        Oder ein ordentlicher Index - das spielt keine Rolle, ob das jetzt 1000 oder 10 Millionen Datensätze sind, wir reden hier von Millisekunden.

        1. Zwei Tabellen die redundanzen zueinander erzeugen sollen performanter sein?

          Wieso Redundanzen? Die Daten in der anderen Tabelle unterscheiden sich doch.
          Es sollen ja unveröffentlichte Inhalte vor veröffentlichung gespeichert werden, die im produktiven Betrieb noch nicht benötigt werden = weniger Daten.

          OT: wo ist denn hier der Login-Button? Habe mich registriert, aber das Cookie wohl aufgegessen.

          Gruß,
          jumini

          1. Zwei Tabellen die redundanzen zueinander erzeugen sollen performanter sein?

            Wieso Redundanzen? Die Daten in der anderen Tabelle unterscheiden sich doch.

            Die Datenstruktur ist redundant - und nachdem die Daten von einer in die Andere kopieren werden (bis jetzt reden wir nicht von verschieben) werden danach auch Redundanzen in den Daten erzeugt.

            Es sollen ja unveröffentlichte Inhalte vor veröffentlichung gespeichert werden, die im produktiven Betrieb noch nicht benötigt werden = weniger Daten.

            Schon klar - aber dennoch sind es dieselben Daten die sich genau durch ein Kriterium unterschieden welches in keinster Weise eine weitere Tabelle rechtfertigt.

            OT: wo ist denn hier der Login-Button? Habe mich registriert, aber das Cookie wohl aufgegessen.

            Einfach den Pfad /my/ aufrufen.

            1. Die Datenstruktur ist redundant - und nachdem die Daten von einer in die Andere kopieren werden (bis jetzt reden wir nicht von verschieben) werden danach auch Redundanzen in den Daten erzeugt.

              nein, sorry. Ich würde die 2 Tabelle nach dem kopieren leeren. Also ist verschieben gemeint.

              Es sollen ja unveröffentlichte Inhalte vor veröffentlichung gespeichert werden, die im produktiven Betrieb noch nicht benötigt werden = weniger Daten.

              Absolut perfekt erkannt von jumini.

              Schon klar - aber dennoch sind es dieselben Daten die sich genau durch ein Kriterium unterschieden welches in keinster Weise eine weitere Tabelle rechtfertigt.

              Auch mal klugscheißen will: Von "kein" gibt es keinen Superlativ ;-) (Sorry, der mußte jetzt sein)

              Grüße, Fred

              1. Es sollen ja unveröffentlichte Inhalte vor veröffentlichung gespeichert werden, die im produktiven Betrieb noch nicht benötigt werden = weniger Daten.

                Absolut perfekt erkannt von jumini.

                Diese Erkennnis ist wie schon erwähnt sehr bläuäugig da es für das DBMS vermutlich sogar Ressourcenintensiver ist Indizes für mehrere Tabellen zu erhalten als für eine.

                Schon klar - aber dennoch sind es dieselben Daten die sich genau durch ein Kriterium unterschieden welches in keinster Weise eine weitere Tabelle rechtfertigt.

                Auch mal klugscheißen will: Von "kein" gibt es keinen Superlativ ;-) (Sorry, der mußte jetzt sein)

                Wer sagt das? Sick? Der Typ hat doch nicht mehr alle Beisammen :)

                "keinster" wird hier als Adverb und nicht als Indefinitpronomen verwandt und kann darum imo auch gesteigert werden :p

                1. Diese Erkennnis ist wie schon erwähnt sehr bläuäugig da es für das DBMS vermutlich sogar Ressourcenintensiver ist Indizes für mehrere Tabellen zu erhalten als für eine.

                  Und genau dein *vermutlich* ist der Knackpunkt.
                  Es kommt schlichtweg auf die anderen Abfragen der primären Tabelle an.
                  Sofern diese so wenig Datensätze wie möglich erfordern, (z.B. weil es sich dabei um besonderst komplexe, tabellenübergreifende Abfragen handelt) bietet sich eine Aufteilung an.

                  Gruß,
                  jumini

                  1. Und genau dein *vermutlich* ist der Knackpunkt.
                    Es kommt schlichtweg auf die anderen Abfragen der primären Tabelle an.
                    Sofern diese so wenig Datensätze wie möglich erfordern, (z.B. weil es sich dabei um besonderst komplexe, tabellenübergreifende Abfragen handelt) bietet sich eine Aufteilung an.

                    Es geht doch eh nur um die temporäre Aufteilung.

                    D.h. ich mache den Testlauf und die Kontrolle in Tabelle 2 und danach spile ich T2 komplett in T1 ein.

                    Grüße, Fred