Klaus: Frage zu MySQL

Hallo Leude,
Ich habe absolut keine AHnung von mySQL überlege mir aber mySQL einzusetzen, deshalb habe ich ein paar allgemeine Fragen zu MySQL, ich hoffe ihr könnt mir diese beantworten, wäre echt nett.
1.) Kann man bei einer MySQL-Datenbank nur einen Teil einer Spalte auslesen? (sinnvoll bei ziemlich langen spalten)
2.) Kann man auch Untertabellen erstellen?
3.) Ist die maximale Anzahl der Tabellen irgendwie beschränkt bzw. sind bei sehr vielen Tabellen Geschwindigkeitseinbußen zu befürchten?

Viele Grüße
Klaus

  1. Hiho,

    1.) Kann man bei einer MySQL-Datenbank nur einen Teil einer Spalte auslesen? (sinnvoll bei ziemlich langen spalten)

    Natuerlich. Siehe LIMIT.

    2.) Kann man auch Untertabellen erstellen?

    Nein. Das kann man in keiner relationalen Datenbank - wuerde auch keinen Sinn machen.

    3.) Ist die maximale Anzahl der Tabellen irgendwie beschränkt bzw. sind bei sehr vielen Tabellen
    Geschwindigkeitseinbußen zu befürchten?

    Weder, noch. Im Gegenteil, viele kleine Tabellen sind schneller als eine grosse ;-)

    Gruss,
     Christian
     http://wwwtech.de

    s s^s<DATA>se;s (([^\s]))(ord($1)%2?
    chr(ord($1)-5):chr(ord($1)-3))sieg;s s^s$_see;
    __END__
    uwlsy%*Sr%kqdphv%yr%AFN4%dy%zzzyhfm3ihC*1'as'>

    1. Hi,

      1.) Kann man bei einer MySQL-Datenbank nur einen Teil einer Spalte auslesen? (sinnvoll bei ziemlich langen spalten)
      Natuerlich. Siehe LIMIT.

      Wenn ich den op richtig verstanden habe, wollte er nur einen Teil _einer_ Zelle _teilweise_ auslesen, was iirc per limit nicht möglich ist, da limit nur die Anzahl an zurückgelieferten Datensätze beschränkt. Auch nach einer kurzen Suche im mysql-Manual konnte ich keine derartige Verwendung von limit erkennen, lasse mich aber wie immer gerne korrigieren.
      Imho ist es aber sowieso sinnlos, eine Spalte nur teilweise auslesen zu wollen, einzelne Anwendungsfälle lassen sich sicherlich auch anders lösen.

      fs

      1. Hiho,

        Wenn ich den op richtig verstanden habe, wollte er nur einen Teil _einer_ Zelle _teilweise_ auslesen, was iirc per limit
        nicht möglich ist, da limit nur die Anzahl an zurückgelieferten Datensätze beschränkt. Auch nach einer kurzen Suche im
        mysql-Manual konnte ich keine derartige Verwendung von limit erkennen, lasse mich aber wie immer gerne korrigieren.

        Nun gut. Dann hab ich das vielleicht falsch verstanden.

        Imho ist es aber sowieso sinnlos, eine Spalte nur teilweise auslesen zu wollen, einzelne Anwendungsfälle lassen sich
        sicherlich auch anders lösen.

        Im Gegenteil. Immer alles auszulesen ist aeusserst idiotisch, weil unperformant und ueberfluessig: ein select * sollte einen
        kompletten Tablescan geben.
        Von daher immer nur einen Teil auslesen, immer nur das noetigste: select feld1,feld2,feld...

        Gruss,
         Christian
         http://wwwtech.de

        s s^s<DATA>se;s (([^\s]))(ord($1)%2?
        chr(ord($1)-5):chr(ord($1)-3))sieg;s s^s$_see;
        __END__
        uwlsy%*Sr%kqdphv%yr%AFN4%dy%zzzyhfm3ihC*1'as'>

        1. Hallo!

          Imho ist es aber sowieso sinnlos, eine Spalte nur teilweise auslesen zu wollen, einzelne Anwendungsfälle lassen sich
          sicherlich auch anders lösen.
          Im Gegenteil. Immer alles auszulesen ist aeusserst idiotisch, weil unperformant und ueberfluessig: ein select * sollte einen
          kompletten Tablescan geben.
          Von daher immer nur einen Teil auslesen, immer nur das noetigste: select feld1,feld2,feld...

          Hier habe ich mich scheinbar unklar ausgedrückt: Selbstverständlich ist einer der entscheidenden Punkte für die mySQL-Performance, dass man die Suchkriterien so wählt, dass möglichst wenige Datensätze zurückgeliefert werden und man sich auch nur die wirklich benötigten Spalten zurückgeben lässt.
          Was ich meinte war: Es imho unsinnig, sich nur einen Teil _eines_ Datenfeldes (also z.B. die ersten 20 Zeichen eines Text-Feldes) von mySQL geben zu lassen. iirc ist dies auch gar nicht möglich.

          fs

          1. Hiho,

            Hier habe ich mich scheinbar unklar ausgedrückt: Selbstverständlich ist einer der

            Jup ;-)

            Was ich meinte war: Es imho unsinnig, sich nur einen Teil _eines_ Datenfeldes (also z.B. die
            ersten 20 Zeichen eines Text-Feldes) von mySQL geben zu lassen.

            Stimmt. Sehr unsinnig.

            iirc ist dies auch gar nicht möglich.

            Doch. SUBSTR() ist in dem Fall dein Freund.

            Gruss,
             Christian
             http://wwwtech.de

            s s^s<DATA>se;s (([^\s]))(ord($1)%2?
            chr(ord($1)-5):chr(ord($1)-3))sieg;s s^s$_see;
            __END__
            uwlsy%*Sr%kqdphv%yr%AFN4%dy%zzzyhfm3ihC*1'as'>

    2. Hiho,

      Hi

      Neugierig wie ich bin ... WAS IST DAS?

      s s^s<DATA>se;s (([^\s]))(ord($1)%2?
      chr(ord($1)-5):chr(ord($1)-3))sieg;s s^s$_see;
      __END__
      uwlsy%*Sr%kqdphv%yr%AFN4%dy%zzzyhfm3ihC*1'as'>

      Kopf auf Tastatur geschlagen?  ;-)

      1. Hiho,

        Neugierig wie ich bin ... WAS IST DAS?

        [...]

        Kopf auf Tastatur geschlagen?  ;-)

        Finds raus ;-)

        Gruss,
         Christian
         http://wwwtech.de

        s s^s<DATA>se;s (([^\s]))(ord($1)%2?
        chr(ord($1)-5):chr(ord($1)-3))sieg;s s^s$_see;
        __END__
        uwlsy%*Sr%kqdphv%yr%AFN4%dy%zzzyhfm3ihC*1'as'>

        1. Finds raus ;-)

          Was'n das für ne Sprache?

          Amit