我的目标很简单:通过来自不同日志的 IP 地址加入;在客户端,我试图确定 JavaScript 错误是从哪里产生的(例如人类或机器人),我从 if aisset($row[date_xy]) 通过 PHP 推断出来。
这个查询在没有 ORDER BY 的情况下也能正常工作,一旦我把它加入到混合中,MySQL 就会跳到 30% 的 CPU 利用率并在我终止进程之前停留几秒钟。我当然是在本地测试这个。我想使用ORDER BY je.date DESC因为我对最旧的可能条目不感兴趣。
我已经尝试过子选择,我已经有一段时间没有做过比基本 JOIN 更精彩的事情了。重要的是我保持语法 SOL 中性。
SELECT
je.date AS date_js,
lb.date AS date_lb,
lh.date AS date_lh
FROM log_javascript_errors AS je
LEFT JOIN log_bots AS lb ON je.ip = lb.ip
LEFT JOIN log_humans AS lh ON je.ip = lh.ip
ORDER BY je.date DESC
LIMIT 20, 20