我有一个查询:
SELECT listings.*, listingagents.agentid
FROM listings
LEFT JOIN listingagents ON (listingagents.id = listings.listingagentid)
LEFT JOIN ignore ON (ignore.system_key = listings.listingid)
WHERE ignore.id IS NULL
ORDER BY listings.id ASC
我正在尝试提高此查询的性能,因为它非常慢并且给 MySQL 服务器带来了沉重的负载。
当我做一个 mysql 解释时,输出显示:
+--------+-------------+----------------+--------+- --------------+------------+---------+------------ ----------------+--------+------------------------ -+ | 编号 | 选择类型 | 表| 类型 | 可能的键 | 关键 | key_len | 参考 | 行 | 额外 | +--------+-------------+----------------+--------+- --------------+------------+---------+------------ ----------------+--------+------------------------ -+ | 1 | 简单 | 列表 | 全部 | 空 | 空 | 空 | 空 | 383360 | 使用文件排序 | | 1 | 简单 | 上市代理| eq_ref | 初级 | 初级 | 4 | db.listings.listingagen... | 1 | | | 1 | 简单 | 忽略 | 参考 | 系统密钥 | 系统密钥 | 1 | 常量 | 404 | 使用哪里;不存在 | +--------+-------------+----------------+--------+- --------------+------------+---------+------------ ----------------+--------+------------------------ -+
我试着做一个简单的查询:
SELECT listings.*
FROM listings
ORDER BY listings.id ASC
并且该查询也有“使用文件排序;”。
字段“listings.id”、“listingagents.id”和“ignore.id”是主键字段“listingagents.id”和“ignore.system_key”有索引。
我可以做些什么来改进第一个查询?