|< 1 2 >| | 19 Einträge, 2 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT
SQL_CALC_FOUND_ROWS
a.id,
a.name,
a.birthday,
b.id
FROM defaultusers AS a
LEFT JOIN photos AS b ON
b.id = (SELECT MAX(id) FROM photos WHERE user_id = a.id)
WHERE
a.status = 'N' and
a.sex = 'w'
ORDER BY a.lastlogin DESC
LIMIT 0, 10;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
+----+--------------------+--------+--------+---------------+------------+---------+------
------+-------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------------+--------+--------+---------------+------------+---------+------
------+-------+-----------------------------+
| 1 | PRIMARY | a | ALL | NULL | NULL | NULL | NULL | 20531 | Using where; Using filesort |
| 1 | PRIMARY | b | eq_ref | PRIMARY | PRIMARY | 4 | func | 1 | Using index |
| 2 | DEPENDENT SUBQUERY | photos | ref | usernummer | usernummer | 3 | users.a.id | 2 | |
+----+--------------------+--------+--------+---------------+------------+---------+------
------+-------+-----------------------------+
3 rows in set (0.00 sec)
SELECT SQL_CALC_FOUND_ROWS(a.id)...
FORCE INDEX(PRIMARY)
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;
QuoteD.h. mein CPU müsste alles doppelt rechnen, auch den komplizierten 3D-Pytagoras... das wird übel.
QuoteWas meinst du mit nicht-trivial? Wie mache ich denn den JOIN trivial??
QuoteMan müsste SQL_CALC_FOUND_ROWS irgendwie dazu animieren, sich nur auf eine Tabelle zu beschränken.
Quotewas genau willst du denn zählen? wenn du die daten aus der anderen
tabelle für die anzahl nicht brauchst, dann lass sie halt raus."
Quoteich sagte schon vorher, du sollst es mal machen und gucken, wie lange es dauert.
ich sagte nicht, bau es in den produktionscode ein. willst du nun
debuggen oder nicht
SELECT count(id) FROM defaultusers
|< 1 2 >| | 19 Einträge, 2 Seiten |