Thread SQL_CALC_FOUND_ROWS() (18 answers)
Opened by Froschpopo at 2007-05-13 21:14

Froschpopo
 2007-05-14 11:49
#35475 #35475
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Du willst also ernsthaft, dass ich das Mörderstatement doppelt ausführe, nämlich nochmal mit COUNT(id) und ohne ORDER-BY und LIMIT:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SELECT
SQL_CALC_FOUND_ROWS
b.id AS file_id,
a.id,
a.name,
IF(sessions.userid IS NOT NULL, '1','0') AS status

FROM defaultusers a

LEFT JOIN sessions ON
a.id = sessions.userid

INNER JOIN photos b ON
b.id = (SELECT MAX(datestamp) FROM photos WHERE user_id = a.id)

INNER JOIN defaultusers c ON c.id = 39212

WHERE
a.status = 'N' and
a.sex = 'w' and
YEAR(CURDATE())-YEAR(a.birthday) <= 30 and
YEAR(CURDATE())-YEAR(a.birthday) >= 16 and
(ACOS((SIN(RADIANS(c.lat))*SIN(RADIANS(a.lat))) + (COS(RADIANS(c.lat))*COS(RADIANS(a.lat))*COS(RADIANS(a.lon)-RADIANS(c.lon)))) * 6378.388) <= 50

ORDER BY a.lastlogin DESC
LIMIT 0,10;


D.h. mein CPU müsste alles doppelt rechnen, auch den komplizierten 3D-Pytagoras... das wird übel.
Was meinst du mit nicht-trivial? Wie mache ich denn den JOIN trivial??
Man müsste SQL_CALC_FOUND_ROWS irgendwie dazu animieren, sich nur auf eine Tabelle zu beschränken.\n\n

<!--EDIT|Froschpopo|1179134220-->

View full thread SQL_CALC_FOUND_ROWS()