Hallo,
mich würde mal interessieren, ob man eine Abfrage noch optimieren kann.
Und wenn ja, was ich noch verbessern kann?
Bei jedem Seitenaufruf prüft diese, ob der User eine neue Nachricht hat.
In der Nachrichtentabelle befinden sich zurzeit ca. 300000 Einträge.
Die Abfrage dauert "im Schnitt" 0.02 Sekunden.
Bei einer Abfrage mit Explain kommt das raus:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE prefix_nachrichten ref prefix_nachrichten_FKIndex1,del_ein prefix_nachrichten_FKIndex1 4 const 2863 Using where
Das ist der Aufbau der Tabelle.
Ich frage mich, wie Xing oder andere Seiten sowas lösen. In deren Tabellen befinden sich doch mehrere Millionen Einträge.
Wie kann ich die Abfrage noch verbessern?
mich würde mal interessieren, ob man eine Abfrage noch optimieren kann.
Und wenn ja, was ich noch verbessern kann?
Bei jedem Seitenaufruf prüft diese, ob der User eine neue Nachricht hat.
In der Nachrichtentabelle befinden sich zurzeit ca. 300000 Einträge.
Die Abfrage dauert "im Schnitt" 0.02 Sekunden.
PHP Code:
SELECT
COUNT(*) a
FROM
prefix_nachrichten
WHERE
user_id_ein = '%d'
AND
del_ein = 0
AND
datum_gelesen IS NULL
Bei einer Abfrage mit Explain kommt das raus:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE prefix_nachrichten ref prefix_nachrichten_FKIndex1,del_ein prefix_nachrichten_FKIndex1 4 const 2863 Using where
Das ist der Aufbau der Tabelle.
PHP Code:
CREATE TABLE prefix_nachrichten (
nachrichten_id INTEGER UNSIGNED NOT NULL,
ordner_id INTEGER UNSIGNED NOT NULL DEFAULT 0,
user_id_ein INTEGER UNSIGNED NOT NULL DEFAULT 0,
user_id_aus INTEGER UNSIGNED NOT NULL DEFAULT 0,
antwort_id INTEGER UNSIGNED NOT NULL DEFAULT 0,
del_ein TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
del_aus TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
datum_del_ein DATETIME NULL,
datum_del_aus DATETIME NULL,
datum_gesendet DATETIME NULL,
datum_gelesen DATETIME NULL,
datum_beantwortet DATETIME NULL,
nachricht TEXT NULL,
PRIMARY KEY(nachrichten_id),
INDEX prefix_nachrichten_FKIndex1(user_id_ein),
INDEX prefix_nachrichten_FKIndex2(user_id_aus),
INDEX prefix_nachrichten_FKIndex3(ordner_id),
INDEX prefix_nachrichten_FKIndex4(del_ein)
);
Wie kann ich die Abfrage noch verbessern?
Comment