我最近注意到我的一个查询运行得很慢,每个查询几乎 1 秒。
查询看起来像这样
选择事件日期.id,
事件日期.eid,
事件日期.日期,
事件日期.时间,
事件日期.title,
eventdate.address,
eventdate.rank,
事件日期.city,
事件日期.state,
事件日期名称,
来源.链接,
类型,
事件日期.img
来源
右外连接
(
选择事件.id,
活动日期,
用户名,
用户排名,
用户.eid,
事件地址,
事件.城市,
事件状态,
事件.lat,
事件。`long`,
GROUP_CONCAT(types.type SEPARATOR ' | ') AS 类型
FROM 事件 FORCE INDEX (latlong_idx)
在 event.uid = users.id 上加入用户
在 users.tid=types.id 上加入类型
在 -74.36829174058 和 -73.64365405942 之间的“长”
和 40.35195025942 和 41.07658794058 之间的纬度
AND event.date >= '2009-10-15'
GROUP BY event.id, event.date
ORDER BY event.date, users.rank DESC
限制 0, 20
)活动日期
ON eventdate.uid = source.uid
AND eventdate.date = source.date;
解释是
+----+-------------+------------+--------+-------- --------+--------------+---------+------------------ ------------+--------+----------------------------- ----+ | 编号 | 选择类型 | 表| 类型 | 可能的键 | 关键 | key_len | 参考 | 行 | 额外 | +----+-------------+------------+--------+-------- --------+--------------+---------+------------------ ------------+--------+----------------------------- ----+ | 1 | 初级 | | 全部 | 空 | 空 | 空 | 空 | 20 | | | 1 | 初级 | 来源 | 参考 | iddate_idx | iddate_idx | 7 | 事件日期.id,事件日期.日期 | 156 | | | 2 | 派生 | 活动 | 全部 | latlong_idx | 空 | 空 | 空 | 19500 | 使用临时的;使用文件排序 | | 2 | 派生 | 类型 | 参考 | eid_idx | eid_idx | 4 | 活动.event.id | 10674 | 使用索引 | | 2 | 派生 | 用户 | eq_ref | id_idx | id_idx | 4 | active.types.id | 1 | 使用位置 | +----+-------------+------------+--------+-------- --------+--------------+---------+------------------ ------------+--------+----------------------------- ----+
我曾尝试在 latlong 上使用“力指数”,但这似乎并没有加快速度。
是导致响应缓慢的派生表吗?如果是这样,有没有办法提高这个性能?
--------编辑------------- 我也尝试改进格式以使其更具可读性
我运行相同的查询,仅将 'WHERE 语句更改为
WHERE users.id = ( 选择用户.id 来自用户 WHERE uidname = 'frankt1' ORDER BY users.approved DESC , users.rank DESC 限制 1) AND日期> = '2009-10-15' 按日期分组 按日期订购)
该查询在 0.006 秒内运行
解释看起来像
+----+-------------+------------+-------+--------- ------+----------------+---------+------ -------------+------+----------------+ | 编号 | 选择类型 | 表| 类型 | 可能的键 | 关键 | key_len | 参考 | 行 | 额外 | +----+-------------+------------+-------+--------- ------+----------------+---------+------ -------------+------+----------------+ | 1 | 初级 | | 全部 | 空 | 空 | 空 | 空 | 42 | | | 1 | 初级 | 来源 | 参考 | iddate_idx | iddate_idx | 7 | 事件日期.id,事件日期.日期 | 156 | | | 2 | 派生 | 用户 | 常量 | id_idx | id_idx | 4 | | 1 | | | 2 | 派生 | 活动 | 范围 | eiddate_idx | eiddate_idx | 7 | 空 | 24 | 使用位置 | | 2 | 派生 | 类型 | 参考 | eid_idx | eid_idx | 4 | 活动.event.bid | 3 | 使用索引 | | 3 | 子查询 | 用户 | 全部 | idname_idx | idname_idx | 第767章 | 5 | 使用文件排序 | +----+-------------+------------+-------+--------- ------+----------------+---------+------ -------------+------+----------------+