Das ist ein stinknormaler Join über NUR 2 Tabellen. Die Last dürfte sogut wie garnicht spürbar sein, wenn die Keys korrekt gesetzt sind. Sind Sie das? Wie gross sind denn die Tabellen? Was steht in $letter_man drin?
Gruss
Jan
Habe zu starke last durch diese Abfrage!
$sql = "SELECT u.user_id, u.user_name, u.user_avatar, u.user_sex,
u.user_status, u.user_b_tag, u.user_b_monat, u.user_b_jahr, u.user_age,
u.user_plz, u.user_regdate, s.logged_in, s.s_user_id
FROM ".USER_TABLE." u
LEFT JOIN ".SESSION_TABLE." s ON s.s_user_id=u.user_id
WHERE u.user_status='0' $letter_man group by u.user_id ORDER BY $sort $S
limit $seite, $anzahlproseite";
laut Provider
Zitat"
vermutlich führt das "Join" Statement in Verbindung mit "Order By" zu
der Lastintensität des Query. Beide Teile lassen sich prinzipiell in
Programmlogik abbilden, was im Falle des "Join" durch mehrere getrennte
Abfragen zu realisieren ist, beim "Order By" durch eine Sortierung auf
das unsortierte Ergebnis des Query. In beiden Fällen würde mit Daten im
Hauptspeicher gearbeitet, was die Last vermutlich deutlich reduzieren
würde."
Was meint er mit aufteilen bz wie sieht sowas aus!?
Danke Euch
Geändert von MrDevil (17.11.2004 um 12:11 Uhr)
Das ist ein stinknormaler Join über NUR 2 Tabellen. Die Last dürfte sogut wie garnicht spürbar sein, wenn die Keys korrekt gesetzt sind. Sind Sie das? Wie gross sind denn die Tabellen? Was steht in $letter_man drin?
Gruss
Jan
also die Tabelen sind noch nicht sehr gross ca 6000 Datensätze die er durchsuchen muss mit dem JOIN zusammen nochmal ca 2000
$letter_man ist derzeit ohne bedeutung ist leer! Wird für späteres update benötigt...
Meine Table!....
::::::.
CREATE TABLE `user_db` (
`user_id` int(120) NOT NULL auto_increment,
`user_name` varchar(25) NOT NULL default '',
`user_vorname` varchar(120) NOT NULL default '',
`user_nachname` varchar(120) NOT NULL default '',
`user_strasse` varchar(120) NOT NULL default '',
`user_hnr` varchar(120) NOT NULL default '',
`user_password` varchar(32) NOT NULL default '',
`user_level` tinyint(4) NOT NULL default '0',
`user_regdate` int(11) NOT NULL default '0',
`user_lastlogon` int(11) NOT NULL default '0',
`user_count` int(120) NOT NULL default '0',
`user_posts` mediumint(NOT NULL default '0',
`user_new_privmsg` smallint(5) NOT NULL default '0',
`user_notify` tinyint(1) NOT NULL default '0',
`user_avatar` varchar(100) NOT NULL default '0',
`user_avatar_ok` int(1) NOT NULL default '0',
`user_mail` varchar(255) NOT NULL default '',
`user_actkey` varchar(32) NOT NULL default '',
`user_totaltime` int(11) NOT NULL default '0',
`user_b_tag` int(2) NOT NULL default '0',
`user_b_monat` int(2) NOT NULL default '0',
`user_b_jahr` int(4) NOT NULL default '0',
`user_sex` char(1) NOT NULL default '0',
`user_status` int(1) NOT NULL default '0',
`user_age` tinyint(4) NOT NULL default '0',
`user_plz` int(6) NOT NULL default '0',
`user_ort` varchar(120) NOT NULL default '',
`user_bundesland` varchar(120) NOT NULL default '',
`user_land` varchar(50) NOT NULL default '',
`user_search_art` int(2) NOT NULL default '0',
`user_search_sex` int(2) NOT NULL default '0',
`user_sternzeichen` int(2) NOT NULL default '0',
`see_user_mail` tinyint(4) NOT NULL default '0',
KEY `user_id` (`user_id`)
)
und die SESSIOn
CREATE TABLE `user_session` (
`UID` int(10) unsigned NOT NULL auto_increment,
`ID` varchar(35) NOT NULL default '',
`JTime` int(15) NOT NULL default '0',
`Time` int(15) NOT NULL default '0',
`Expire` int(10) NOT NULL default '0',
`IP` varchar(32) NOT NULL default '',
`UserAgent` varchar(255) NOT NULL default '',
`logged_in` int(1) NOT NULL default '0',
`s_user_id` int(1) NOT NULL default '0',
PRIMARY KEY (`UID`)
)
@usertabelle:
warum nur key und nicht primary key?
@sessions:
überhaupt kein index auf s_user_id vorhanden!!
nee kein Index auf Session ist das schlimm??
Hab glaub ich mal gelesen das das nicht wichtig sei...
"warum nur key und nicht primary key?"
hmmm das frag ich mich auch gerade... ist da ein unterschied
können diese beiden Fehler zu so einer last führen?
Mein Problem ist ja nun das der Server in die Knie geht sobald die SESSIONS mit ins spiel kommen ... die brauch icha ebr die abfrage um zu schaun ob der user bez die User online sind!........
Naja, wenn du keinen Index in in der Session-Tabelle setzt wird die gesamte Tabelle beim Join untersucht. Existiert ein Index auf die Spalte, aufder du den Join machst, dann "weiss" die Datenbank bereits welche Datensätze zu welchem Index gehören... Das weiss ist mit absicht in "... aber sollte die Sache etwas klarer machen
Probiers doch einfach mal?
Gruss
Jan
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)