为啥记录在 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 分类器错误分类了一条记录?

如何再次重用声音以及为啥我的声音在到达预期页面之前离开了一页?

预计将解析从 S3 加载的雪花数据中的列时到达记录末尾

尝试将 csv 文件加载到雪花数据库时出现“在预期解析列时到达记录结尾”错误

为啥 DataAvailable 在 5 秒后停止被调用?

为啥作曲家在 300 秒后安装超时?