Mailinglisten-Archive |
Alexander Meis (simmail] schrieb: > also es geht im die statements hier.... Ich nehme an deine Tabelle "UserIdIndex" besteht aus einem einzigen Feld "User_Id" vom Typ (var)char. Und auf diesem Feld liegt ein eindeutiger Index (der einzige Index der Tabelle). Ist das so? 1. > $checkId = mysql_query("select max(ID) AS maxId from UserIdIndex"); Durch die Verwendung des Index sehr schnell. ! In älteren Versionen von Mysql kann die max funktion keine Indizes verwenden. Umbedingt eine aktuelle Version einsetzten. (Ab 3.22.25 sicher kein Problem mehr) 2. > $checkId = mysql_fetch_row(mysql_query("select * from UserIdIndex where User_Id = '$User_Id' ")); <Select * ...> ? Gibst doch mehr Felder? Verwendest du in '$User_Id' Joker (%)? Wenn: User_Id = 'MEINUSER' > sehr schnell (Der Index greift voll) User_Id = 'MEI%' > langsam (evtl. können viele Ergebnisszeilen zusätzlich verlangsamen) User_Id = '%USER' > total langsam (evtl. können viele Ergebnisszeilen zusätzlich verlangsamen) 3. > $writeId = mysql_query("insert into UserIdIndex (User_Id) values ('$User_Id')"); Geht recht schnell, solange nicht viele Indizes angelegt wurden. (Was ja anscheinend nicht der Fall ist) > bis zu welcher tabellenlänge läst sich das betreiben ? Wieviele werden es den voraussichtlich werden? Durch die geringe Zeilengrösse (in KB) kann Mysql wahrscheinlich die gesamte Tabelle (mit Index) im Arbeitsspeicher cachen. Meiner Einschätzung nach würde bei 1.000.000 Einträgen auf einer Standard Linuxkiste (P200,128 MB Ram, etwas moderne Harddisk) kein Statement mehr als 2 Sekunden dauern. (Und die Einschätzung ist vorsichtig) mfg Paul --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive