joins index und unique etc.

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

  • joins index und unique etc.

    Hallo Leute,
    hab da mal ein paar Fragen.

    1. Joins
    ist das mit den ON teil so ok? oder geht das besser?
    Glaub mal gelesen zu haben das man im ON teil nicht mehrere
    Bedingungen angeben sollte.

    PHP-Code:
    //Abfrage zu jedem Artikel aus der Warenkorb Tab. die restlichen Daten zum artikel aus der Produkt Tab holen.
    $sql mysql_query("
            SELECT
        t1.id as wid,
        t1.artikel_id,
        t1.menge,
        t1.vari1,
        t1.vari2,
        t1.vari3,
        t1.vari4,
        t2.id as pid,
        t2.preis,
        t2.artikel_name,
        t2.bildklein
            FROM
        " 
    TABLE_WARENKORB " t1
        INNER JOIN " 
    TABLE_PRODUKTE " t2 
        ON t1.artikel_id = t2.id
        AND t1.sessionid = '" 
    session_id() . "'
        "
    )or die(mysql_error()); 

    Hier hab ich zwei innerjoins verwendet um aus der dritten tabelle
    den Namen des Landes zu holen.
    Funktionieren tut es, nur ist der Aufbau so ok (performance)?

    PHP-Code:
    $sql mysql_query("
            SELECT
        t1.land,
        t1.bestellungen,
        t2.id as vkid,
        t2.name,
        t2.preis,
        t2.preisgering,
        t2.versandweniger,
        t2.beschreibung,
        t2.land,
        t2.abwievielbest,
        t2.aktiv,
        t3.id,
        t3.name as lname
            FROM
        " 
    TABLE_KUNDEN " t1
        INNER JOIN " 
    TABLE_VERSANDKOSTEN " t2 
        ON t1.email = '"
    .$_SESSION['mail']."'
        AND t1.land = t2.land
        AND t1.bestellungen >= t2.abwievielbest
        AND t2.aktiv = '1'
        INNER JOIN " 
    TABLE_LAND " t3
        ON t1.land = t3.id
        "
    )or die(mysql_error()); 
    2. Indexe
    Ist es richtig das man auf alle Spalten die in Where Bedingungen vorkommen ein index setzen sollte?

    3. unique
    beispiel
    Die Email Adresse soll nur einmal in der DB vorkommen.
    Was ist besser,
    beim senden eines Formulars eine Abfrage machen
    und schauen ob die email schon vorhanden ist, dann weiter zum Eintragen (insert into), oder gleich zum insert (emailspalte unique) und danach schauen per mysql_errno ob die Daten eingetragen wurden.


    4. Primärschlüssel
    Wozu ist dieser jetzt gut.

    Bin da bei mysql.de nicht ganz schlau draus geworden.
    mfg
    marc75

    <Platz für anderes>

  • #2
    1. Bedingungen, die nur eine Tabelle betreffen wie z. b. t1.session_id sollten in den WHERE teil afair
    2. prinzipiell ja
    3. ich mach mein insert und wenn's knallt, dann knallt's
    4. zur eindeutign identifikation eines datensatzes

      wenn du details zu einem user haben willst, kannst du zwar details.php?mail=meinemail@domain.de nutzen, da die mail-adresse ja eindeutig ist, aber details.php?userid=45 is kürzer (nur als beispiel)
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      hab noch ne frage zum index,

      bei text und varchar spalten die in der Suchfunktion(select * tab where beschreibung = irgendwas) benutzt werden sollte man doch statt ein index eher ein fulltext drauflegen oder?
      mfg
      marc75

      <Platz für anderes>

      Kommentar


      • #4
        kommt drauf an, eventuell willst du ja nur die ersten fünf zeichen indizieren, oder die ersten zehn, oder oder oder

        fulltext ist übrigens auch ein index
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar

        Lädt...
        X