phpbar.de logo

Mailinglisten-Archive

[php] [php/mysql] Optimierte Kalenderabfrage

[php] [php/mysql] Optimierte Kalenderabfrage

Sebastian Mendel lists at sebastianmendel.de
Mit Jun 15 08:27:54 CEST 2005


Michael Wurz wrote:

> nachdem ihr mir beim letzten Mal so hervorragend geholfen habt, bin ich guter Dinge, dass ihr auch diesmal eine gute Lösung parat habt. Ich habe mir einen kleinen Kalender in Php programmiert, in dem ich nun spezielle Tage farblich abheben möchte.
> 
> Im Moment läuft es bei mir mit einer for($i=0, $i < 31, $i++) Schleife, in die ich eine Mysql Abfrage eingeliedert habe.
> 
> SELECT timestamp FROM geburtstage WHERE user = '".$id."' AND timestamp BETWEEN '".$start_date."' AND '".$stop_date."' ORDER BY timestamp LIMIT 1;
> $db_highlight = mysql_num_rows(mysql_query($sql,$dblink));
> 
> Im Prinzip möchte ich dort nur prüfen, ob der eingeloggte User Geburtstage zu einem bestimmten Datum hat, oder nicht. Inzwischen sind die eingetragenen Geburtstage in der Datenbank auf eine Zahl angewachsen, die die Abfragen von Tag zu Tag langsamer werden lassen. Kann ich irgendwas geschickter machen?

ein Index in dieser Tabelle auf `user` existiert aber?

wenn du eh für jeden Tag einzeln abfragst wieso benötigst du dann ein
BETWEEN?

du kannst doch auch direkt fragen `timestamp` = '" . $date . "'
eventuell kannst du das timestamp noch mit den MySQL-Funktionen ins
selbe Format bringen wie dein $date, bzw sollten halt beide im Format
'YYYY-MM-DD' sein


> Kann ich zuerst ne Einmalige SQL Abfrage machen, die ich dann in der Schleife auslesen kann? Ich möchte vermeiden, dass bei jedem Aufruf des Kalenders erstmal 31 Queries losgeschickt werden müssen, bevor ich weiß was los ist. Freue mich auf eure Tipps!

das wäre wohl am schnellsten

WHERE CONCAT( YEAR(`timestamp`), MONTH(`timestamp`) ) = "' . $date . '"


das dann in ein Array mit dem Datum als Schlüssel und dann jeden Tag das
Array abgefragt anstelle jeden Tag ein Query.


-- 
Sebastian Mendel

www.sebastianmendel.de
www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet

php::bar PHP Wiki   -   Listenarchive