php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.08.2011, 12:22  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zitat:
Zitat von imamk Beitrag anzeigen
3. Gemischt mit der loginzeit <= nachrichtenzeit
http://imam.grupdavet.biz/sql/3.txt
Wo ist das denn da falsch sortiert? Sieht für mich nach der Ansicht von 2.txt korrekt aus, allerdings wäre es einfacher nachzuvollziehen wenn du den Nachrichtenzeitstempel auch mit abfragen würdest.

Übrigens solltest du deinen JOIN unbedingt optimieren, aktuell fragst du sämtliche möglichen Kombinationen von Logins und Nachrichten ab und suchst dann erst mittels WHERE aus, welche zusammengehören. Besser wäre ein LEFT JOIN, bei dem zu jeder Nachricht von vorneherein nur der zugehörige Login abgefragt wird:

Code:
SELECT ... FROM nachrichten n LEFT JOIN login l ON l.id=n.userid WHERE ...
Zur Veranschaulichung: Angenommen du hast 100.000 Nachrichten von 1000 Logins. Bei deiner Variante werden zunächst 1000 * 100.000 = 100.000.000 Datenreihen erstellt und in denen dann gesucht, wo l.id=n.userid gilt. Performance-Killer!

Hilfreich bei der Analyse von Queries auf mehrere Tabellen ist EXPLAIN. Einfach im phpMyAdmin o.ä. die Abfrage mit vorangestelltem EXPLAIN ausführen (EXPLAIN SELECT ...) und du siehst, wie MySQL sie verarbeitet. Tipp: Wenn du große Zahlen, "use filesort" oder "use temporary tables" siehst, könnte die Abfrage problematisch sein.

Mehr Infos dazu: http://dev.mysql.com/doc/refman/5.1/de/explain.html
fab ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.08.2011, 17:39  
Neuer Benutzer
 
Registriert seit: 19.03.2011
Beiträge: 26
PHP-Kenntnisse:
Anfänger
imamk befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

vielen Dank für die Antworten.

@fab
Du hast Recht. Das werde ich aufjeden Fall noch optimieren.

Da bleibt noch mein Problem mit der Nachrichtenanzeige nach dem Login...
Hättest du noch dazu einen guten Tipp?

Gruß

Imam K.
imamk ist offline   Mit Zitat antworten
Alt 11.08.2011, 18:00  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Ok nachdem ich deine Postings nochmal gelesen habe, verstehe ich erstmal dein Problem. Deine Abfrage überprüft für jede Nachricht lediglich ob die nach dem Login des Verfassers geschrieben wurde. Du willst aber mit einem statischen Wert (dem Loginzeitpunkt des aktuellen Benutzers) vergleichen. Woher der kommt kann ich dir nicht sagen aber du solltest ihn bereits vor dieser Abfrage ermittelt haben.
fab ist offline   Mit Zitat antworten
Alt 11.08.2011, 18:25  
Neuer Benutzer
 
Registriert seit: 19.03.2011
Beiträge: 26
PHP-Kenntnisse:
Anfänger
imamk befindet sich auf einem aufstrebenden Ast
Standard

hi,

die loginzeit, wird dann mit dem update befehl jedes mal beim einloggen aktuallisiert, das macht das PHP script.

PHP-Code:
$loginzeit "UPDATE login set login_tstamp=CURRENT_TIMESTAMP where id='".$_SESSION['profil']['user_id']."';"
Das klappt ja soweit auch.

Jetzt soll nur noch der User die alten Nachrichten vor seinem Login nicht sehen können.

Danke im Vorraus!
imamk ist offline   Mit Zitat antworten
Alt 11.08.2011, 18:46  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Soweit klar. Jetzt lies mein Posting nochmal dann hast du deine Antwort.
fab ist offline   Mit Zitat antworten
Alt 11.08.2011, 20:30  
Neuer Benutzer
 
Registriert seit: 19.03.2011
Beiträge: 26
PHP-Kenntnisse:
Anfänger
imamk befindet sich auf einem aufstrebenden Ast
Standard

hmm... musste mehrmals dein post lesen, um eine Idee zu bekommen.

Meinst du, die aktuelle Loginzeit in der SESSION abzulegen und dann diese mit den Nachrichtenzeitstempln zuvergleichen funktioniert?
Code:
select ... from ... where l.id=n.userid and n.tstamp>='.$_SESSION['logintimestamp'].' ...

Geändert von imamk (11.08.2011 um 20:48 Uhr).
imamk ist offline   Mit Zitat antworten
Alt 11.08.2011, 20:51  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Ding, Jackpot
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 11.08.2011, 21:05  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Edit: Ninja'd
fab ist offline   Mit Zitat antworten
Alt 11.08.2011, 23:28  
Neuer Benutzer
 
Registriert seit: 19.03.2011
Beiträge: 26
PHP-Kenntnisse:
Anfänger
imamk befindet sich auf einem aufstrebenden Ast
Standard

Hi,

danke noch mal...
habe deine tipps gerade umgesetzt und muss noch die ergebnisse überprüfen.

Es sieht aber sehr gut aus.

Gruß

Imam K.
imamk ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL - Abfrage bleibt Problem! yellow PHP Einsteiger 1 01.07.2011 13:47
[Erledigt] Problem mit MYSQL Abfrage in einer While Schleife mirko911 PHP Einsteiger 1 11.04.2011 11:54
Problem mit Mysql abfrage wolfsmichel PHP Einsteiger 4 21.12.2010 22:35
SQL Abfrage Fehler nach Umstieg von MySQL4 auf MySQL 5 chefmaik PHP Tipps 2010 5 05.08.2010 16:02
PDO MySQL abfrage funktioniert nicht Bloodydead PHP Tipps 2010 8 18.06.2010 11:08
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
OOP Mysql Abfrage Problem Sebbi51 PHP Tipps 2009 12 21.10.2009 20:41
Timestamp problem phrain PHP Tipps 2008 2 04.04.2008 09:41
mysql Abfrage Problem mit dem Join test022 Datenbanken 5 28.04.2007 08:07
Mysql SELECT Abfrage -- Problem mit LIMIT djrace Datenbanken 2 01.05.2006 12:58
Timestamp problem -- hilfe -- Datenbanken 11 16.01.2006 18:29
timestamp in mysql Aris Sung PHP-Fortgeschrittene 9 22.11.2005 17:54
timestamp abfrage problem Datenbanken 5 29.08.2004 18:23
MySQL Problem Datenbanken 4 27.08.2004 14:42
mySQL Timestamp Problem... Datenbanken 1 16.08.2004 09:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql timestamp abfrage

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum