SELECT DISTINCT sid,
usrname,
errcode,
msg,
DATE,
TIME
FROM ecode e,
action a
WHERE e.errcode = a.STATUS LIMIT 250;
我正在开发一种工具来查看服务器日志,但是此查询的速度非常慢,而且我不确定为什么(我对SQL还是很陌生,所以可能是基本的东西)。我正在针对服务器日志数据库运行此查询。 errcode和msg来自ecode表,所有其他属性来自action表(具有约100k条目)。电子代码表包含我们认为错误的某些状态代码的列表。无论我将其限制为25个还是整个表有多少结果,此查询都会花费大约8秒的时间执行,因此我怀疑这是罪魁祸首。我在这里做什么错了?
答案 0 :(得分:1)
确保您在
上具有正确的索引 table ecode column errcode
table action column status
(建议),您应使用显式联接sintax
SELECT DISTINCT sid, usrname, errcode, msg, date, time
FROM ecode e
INNER JOIN action a ON e.errcode = a.status
LIMIT 250