[MySQL] Position ermitteln

PHP:
SELECT count(*) AS Anzahl, user_id FROM list WHERE round = 6 GROUP BY user_id ORDER Anzahl DESC

Bau doch mal folgenden Index auf

CREATE INDEX foobar ON list (round, user_id)

SQL:
SELECT user_id, count(*) AS Anzahl FROM list USE INDEX (foobar) WHERE round = 6 GROUP BY user_id ORDER Anzahl DESC
 
Hi,

versuch doch mal das USE INDEX. das fehlt in Deinem Explain

SQL:
SELECT user_id, count(user_id) AS Anzahl 
FROM list 
USE INDEX (foobar) 
WHERE round = 6 
GROUP BY user_id ORDER Anzahl DESC
 
OK, finalversuch

INDEX :

SQL:
CREATE INDEX idx_foobar ON list(round, user_id);

QUERY I:

SQL:
SELECT user_id, count(user_id) AS Anzahl 
FROM list 
USE INDEX ( idx_foobar ) 
WHERE round = 6 
GROUP BY round, user_id 
ORDER Anzahl DESC


QUERY II:

SQL:
SELECT user_id, anzahl 
FROM (
   SELECT user_id, count(user_id) AS Anzahl 
   FROM list 
   USE INDEX ( idx_foobar ) 
   WHERE round = 6 
   GROUP BY round, user_id )X
oder by X.anzahl DESC

mach doch dafür mal bitte einen EXPLAIN.

[EDIT]
versuch auch mal ruhig FORCE INDEX statt USE INDEX
[/EDIT]
 
Zuletzt bearbeitet:
*freu* Beide schaffen es auf 0,4 Sekunden und das nur selten.

Code:
die Abfrage dauerte 0.0001 sek
ist erreicht.
 
Zurück