除限制外增强查询运行时
Posted
技术标签:
【中文标题】除限制外增强查询运行时【英文标题】:Enhance query runtime besides limit 【发布时间】:2021-12-30 10:02:22 【问题描述】:我有一个 SQL 可以从 2 个表(大型数据库)中选择项目。我尝试通过在每张桌子上使用 LIMIT 来加快这个过程。然而,结果并不显着。有没有其他方法可以进一步提高查询时间?
原始查询
select a.item_id,
from
(SELECT distinct item_id
FROM dim_item) a
INNER JOIN
(SELECT item_id
FROM dim_item_attr) b
on a.item_id = b.item_id
添加限制 10
select a.item_id,
from
(SELECT distinct item_id
FROM dim_item
LIMIT 10) a
INNER JOIN
(SELECT item_id
FROM dim_item_attr
LIMIT 10) b
on a.item_id = b.item_id
limit 10
【问题讨论】:
您使用的是哪个 dbms? 您的查询不清楚,您要检索什么?您正在使用哪个 dbms 引擎?这 2 个表的列上是否存在索引 - 需要更多详细信息才能为您提供更好的指导。 只要您有不同的子句,rdbms 必须完成查询执行,并且只有在此之后才能应用限制。 也许确切的限制数字并不重要,您可以删除不同的关键字,删除子查询并执行简单的连接,限制为像 1000 这样更大的数字,希望那里有 10 个不同的值然后在其上运行另一个查询,并使用 distinct 和 limit 10。 请包含表定义及其键。 【参考方案1】:如果没有关于表、键、索引、DBMS 等的任何详细信息,很难给出任何建议,但我将从简化查询开始:
SELECT item_id
FROM dim_item a
WHERE EXISTS (
SELECT 1
FROM dim_item_attr b
WHERE a.item_id = b.item_id
);
【讨论】:
以上是关于除限制外增强查询运行时的主要内容,如果未能解决你的问题,请参考以下文章
DirectX 11:运行简单的 DirectX 应用程序时运行时崩溃
应用程序在调试时运行时如何禁用 Firebase 崩溃报告?