phpbar.de logo

Mailinglisten-Archive

Query Optimierung "Neueste Beitraege meiner Freunde"

Query Optimierung "Neueste Beitraege meiner Freunde"

Technik auXion.de technik at auxion.de
Mon Apr 16 08:15:56 CEST 2007


Hallo;


> SELECT * FROM
>    Beiträge B INNER JOIN Freunde F ON (F.UserIdTarget = B.UserId AND
> F.UserIdSource = 77)
> ORDER BY B.Datum DESC

Und wenn du die Abfrage so machts:
SELECT * FROM Freunde F LEFT JOIN Beiträge B ON (F.UserIdTarget = B.UserId)
WHERE F.UserIdSource = 77 ORDER BY B.Datum DESC

Dann solltest Du aber Index auf folgende Felder haben:
F.UserIdTarget, B.UserId (Weil im JOIN Vergelich)
F.UserIdSource = Weil im WHERE Bereich
B.Datum = Weger der Sortierung

Ausserdem Rate ich immer die Felder im SELECT anzugeben die du auch Abfragen
möchtest.


Mit freundlichen Grüssen
    Thomas Goik

Ihre Auktionsseiten im Internet
http://www.auxion.de
http://www.Xhammer.de

--
Lofox GmbH
Geschäftsführerin: Evelyn Fuchs
Im Kamperholz 48
44805 Bochum - Germany
Amtsgericht Bochum HRB 7042
USt-IdNr.: DE215698227
St.-Nr. Bochum 306/5885/0172
> -----Original Message-----
> From: mysql-de-bounces at lists.4t2.com [mailto:mysql-de-
> bounces at lists.4t2.com] On Behalf Of ilja
> Sent: Friday, April 13, 2007 6:04 PM
> To: mysql-de at lists.4t2.com
> Subject: Query Optimierung "Neueste Beitraege meiner Freunde"
> 
> Hallo Liste,
> 
> Folgendes Szenario:
> 
> Tabelle "Freunde" bestehend aus "UserIdSource" und "UserIdTarget"
> Tabelle "Beiträge" bestehend aus "Id", "Text", "Datum" und "UserId"
> 
> nun möchte ich alle Beitraege meiner Freunde haben, sortiert nach Datum
> absteigend...
> meine Id ist beispielsweise 77
> 
> SELECT * FROM
>    Beiträge B INNER JOIN Freunde F ON (F.UserIdTarget = B.UserId AND
> F.UserIdSource = 77)
> ORDER BY B.Datum DESC
> 
> Ich habe einen Index ueber zwei Spalten auf der Tabelle Beiträge:
> (UserId,Id)
> Und auf der Freunde Tabelle einen Index: (UserIdSource,UserIdTarget) und
> andersrum.
> 
> Die Freunde Tabelle ist sehr klein, die Beitraege Tabelle ist riesig.
> Es ist also richtig wenn Mysql erst die Freunde herausfindet und an
> dieses Ergebnis die  Beitraege joined...
> 
> Leider wird der Index der Beitraege Tabelle nicht zum sortieren benutzt...
> 
> Kann ich irgendwie den USING TEMPORARY, USING FILESORT wegbekommen?
> 
> 
> grueße, Ilja
> ____________
> Virus checked by G DATA AntiVirusKit
> Version: AVK 17.3957 from 13.04.2007
> Virus news: www.antiviruslab.com
> 
> 
> _______________________________________________
> Allgemeine Infos zur Liste: http://www.4t2.com/mysql/
> Verwaltung: https://lists.4t2.com/cgi-bin/mailman/listinfo/mysql-de

_______________________________________________
Allgemeine Infos zur Liste: http://www.4t2.com/mysql/
Verwaltung: https://lists.4t2.com/cgi-bin/mailman/listinfo/mysql-de

php::bar PHP Wiki   -   Listenarchive