phpbar.de logo

Mailinglisten-Archive

No Subject
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

No Subject



Hallo Liste, 
ich habe eine Frage zum moeglichst ressourcenschonenden Aufbau
einer Tabelle, dh moeglichst schnellen Zugriff. Es handelt sich 
dabei Newsseiten verschiedener Websites, die von einem PHP-script
aus der MySQL-Datenbank generiert werden. Also ca 10.000 queries
am Tag. Fuer Expertenhinweise waere ich dankbar.

Nun habe ich noch wenig Erfahrung speziell im Erstellen von table
strukturen, die momentane Table sieht wie folgt aus:

CREATE TABLE dienewstabelle (
   id int(11) DEFAULT '0' NOT NULL AUTO_INCREMENT, 
   text blob DEFAULT '' NOT NULL, 
   more blob DEFAULT '' NOT NULL,
   datestamp datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
   name varchar(100) DEFAULT '' NOT NULL, 
   email varchar(100) DEFAULT '' NOT NULL,
   forumurl varchar (100),
   hits int(11),
   beitragstyp char(20) NOT NULL,
   site char(20) NOT NULL,
   thementyp char(20) NOT NULL,
   visibility char(20) NOT NULL,
   headline varchar(100) DEFAULT '' NOT NULL, 
   PRIMARY KEY (id),
   KEY datestamp (datestamp),
   KEY beitragstyp (beitragstyp),
   KEY site (site),
   KEY thementyp (thementyp),
   KEY visibility (visibility)
);

Die News-Seiten werden jeweils nach einem QUERY_STRING generiert: 
zB newsysadmin.php3?name=Heraklit&visibility=N&orderby=datestamp 
Daraus bastelt das PHP-script dann eine korrespondierende SQL-query: 
SELECT * FROM teamplaydenews WHERE name=Heraklit AND visibility=N ORDER BY
datestamp 

Weitere queries die so auch auftauchen koennten im taeglichen
Betrieb:
newsysadmin.php3?beitragstyp=kommentar&orderby=datestamp 
newsysadmin.php3?beitragstyp=news&site=halflifede&orderby=datestamp

newsysadmin.php3?beitragstyp=news&site=halflifede&thementyp=mods&orderby=datestamp
newsysadmin.php3?name=jo&$beitragstyp=news&orderby=datestamp&limit=30 

newsysadmin.php3?beitragstyp=news&orderby=datestamp&orderby2=thementyp 
Was muss ich bei einem Orderby mit 2 Argumenten beachten? Kann man
die Tabellenstruktur so entwerfen, dass ein solches Orderby moeglichst
gewschwind von der Datenbank generiert wird? Hier soll eine Newssite
generiert werden die Thematisch geordnet ist, und dabei auch nach
Datum (ein Beispiel waere www.wallstreet-online.de).

Nun, wenn ich also im Moment die zusammengestellte SQL-Query so gegen
die Tabelle laufen lasse, bekomme ich bei allen WHERE abfragen die
Fehlermeldung *0 is not a MySQL result index*, das passiert bei allen
queries ausser wenn ich sowas wie *...WHERE id=1* uebergebe, dh mit
id funktionierts, bei anderen argumenten bekomme ich obige fehlermeldung. 

Eine weitere Frage: wenn ich ORDER BY datestamp verwende, dann werden
die alten News zuerst ausgegeben. Wie kann ich erreichen, dass mir
fuer meine Newsseiten jeweils die aufsteigender reihenfolge sortiert
werden? ASC? DESC? Kann MySQL nach Datum ausgeben?  Wie muss ich meine
table strukturieren, damit die *ORDER BY datestamp*-Ausgaben mit 2 
argumenten besonders geschwind laufen?
 
Letzlich noch die Frage, ob ich ueberhaupt eine einzige Tabelle
verwenden sollte. Stellen schaetzungsweise 10000 Eintraege nach
einem Jahr ein Performanceproblem bei der Abfrage der Tabelle dar?

Wie sollte die oben dargestellte Tablestruktur besser aussehen, wenn
sie die Forderungen erfuellen soll? ich koennte mir vorstellen das
ich im table-entwurf etliche Anfaengerfehler gemacht habe.

Danke im Vorraus

--Heraklit

-- 
Sent through Global Message Exchange - http://www.gmx.net

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive