为啥记录在 40 秒后到达
Posted
技术标签:
【中文标题】为啥记录在 40 秒后到达【英文标题】:Why records arrive after 40 seconds为什么记录在 40 秒后到达 【发布时间】:2018-10-25 13:38:11 【问题描述】:ayetler 表 = 6500 行
fihristayet 表 = 13279 行
Sql 查询:
SELECT ayetler.ayet_tr
FROM fihristayet,ayetler
WHERE (fihristayet.fihristAyet_ayet=ayetler.ayet_no AND
fihristayet.fihristAyet_sure_id=ayetler.sure_id)
AND fihristayet.fihristAyet_fihrist_id=354
我有 15 行返回。为什么记录在 40 秒后到达
【问题讨论】:
为您的表添加索引。如果没有索引,则必须遍历和比较所有记录,这取决于您的磁盘速度,这可能会很慢。通过 where 语句中的字段索引,您的数据库服务器可以优化。 你期待什么时间? 这可能是从缓慢的查询(缺少索引)到错误的数据库配置(内存、IO 等) - 请至少提供架构信息 - 查询计划和一些数据库配置信息。 记录需要在3秒内到达 @v3nqe 3 秒?即使在具有良好索引的低端机器上也应该在 100 毫秒内到达。 【参考方案1】:首先,学会使用正确、明确、标准 JOIN
语法。 从不在FROM
子句中使用逗号。因此,您的查询应如下所示:
SELECT a.ayet_tr
FROM fihristayet f JOIN
ayetler a
ON f.fihristAyet_ayet = a.ayet_no AND
f.fihristAyet_sure_id = a.sure_id
WHERE f.fihristAyet_fihrist_id = 354;
那么您需要在fihristayet(fihristAyet_fihrist_id, fihristAyet_ayet, fihristAyet_sure_id)
和ayetler(ayet_no, sure_id)
上建立索引。
【讨论】:
FROM fihristayet,ayetler
以上是关于为啥记录在 40 秒后到达的主要内容,如果未能解决你的问题,请参考以下文章
为啥 NLTK NaiveBayes 分类器错误分类了一条记录?
如何再次重用声音以及为啥我的声音在到达预期页面之前离开了一页?