哪个Oracle查询更快

     2023-05-09     68

关键词:

【中文标题】哪个Oracle查询更快【英文标题】:Which Oracle query is faster 【发布时间】:2018-11-24 15:08:50 【问题描述】:

我正在尝试使用 C# WPF 视图显示员工属性。

我的数据库中有“2”个不同的 oracle 表中的数据:

那些高层次的表结构是……

员工表 (EMP) - 列:

ID, Name, Organisation

员工属性表 (EMPPR) - 列

ID, PropertyName, PropertyValue

用户将输入“员工姓名列表”,我需要使用“2”表中的数据显示员工属性。

每个员工在EMPPR 表中拥有 40-80 的属性,即每个员工 40-80 行。在这种情况下,哪种方法更有效?

方法 #1 - 单次查询数据检索:

SELECT Pr.PropertyName, Pr.PropertyValue
FROM EMP Emp, EMPPR Pr
WHERE Emp.ID = Pr.ID
  AND Emp.Name IN (<List of Names entered>)

方法 #2 - 使用一个查询获取 ID 列表,并在第二个查询中使用该 ID 获取属性

查询 #1:

SELECT ID
FROM EMP
WHERE Name IN (<List of Names entered>)

Query #2:

SELECT PropertyName, PropertyValue
FROM EMPPR
WHERE ID IN (<List of IDs got from Query#1>)

我需要一次检索大约 10K 员工的详细信息,其中每个员工都有 40-80 个属性。

哪种方法好?

【问题讨论】:

Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI JOIN 语法-92 SQL 标准(25 多年前),不鼓励使用它 【参考方案1】:

哪个查询更快?

第一个,它使用单个查询来获取您的结果。 为什么?处理查询所花费的大部分时间,尤其是像您这样具有中等大小行的查询,都消耗在从客户端到数据库服务器的来回传输上。

另外,当你有太多值时,WHERE something IN (val, val, val, val ... ... val) 构造可能会引发错误。所以第一个查询更健壮。

专业提示:进入 21 世纪并使用新的 JOIN 语法。

 SELECT Pr.PropertyName, Pr.PropertyValue
   FROM EMP Emp
   JOIN EMPPR Pr ON Emp.ID = Pr.ID
  WHERE Emp.Name IN (<List of Names Inputted>)

【讨论】:

同意这一点,数据库做“加入”的工作比让它在应用层/程序中完成要好得多,就像你在第二种方法中所做的那样 谢谢大家。如果我们使用与问题中提到的不同的 JOIN 语法,则性能会有所提高。 @UpendharSingirikonda - 不,性能没有差异。许多人发现显式连接语法更清晰。【参考方案2】:

使用第一种方法连接两个表,这比使用两次where子句要好得多。

【讨论】:

哪个 SQL 查询更快,为啥?

】哪个SQL查询更快,为啥?【英文标题】:WhichSQLqueryisfasterandwhy?哪个SQL查询更快,为什么?【发布时间】:2011-07-0419:40:50【问题描述】:最近,有人要求我编写一个查询,以便从包含最大数量的此类实体的组中选择实体的属性... 查看详情

哪个sql查询更快?

】哪个sql查询更快?【英文标题】:Whichsqlqueryisfaster?【发布时间】:2014-12-2511:29:56【问题描述】:我正在使用postgresql数据库并希望改进查询(第一个)。我将其重写为第二个。但是我读了一篇文章,上面说“NOTIN”是非常缓慢... 查看详情

哪个选择查询将运行得更快[重复]

】哪个选择查询将运行得更快[重复]【英文标题】:WhichSelectquerywillrunfaster[duplicate]【发布时间】:2014-12-0207:38:55【问题描述】:您好,我正在尝试从包含大约100万条记录的表中获取最大ID。请建议我在这些查询中哪一个执行得更... 查看详情

哪个是更快的单个大查询或几个小查询?

】哪个是更快的单个大查询或几个小查询?【英文标题】:Whichoneisfastersinglebigqueryorfewsmallqueries?【发布时间】:2015-07-1204:11:52【问题描述】:所以我想从数据库中抓取数据,哪种方法更快,创建几个查询还是一个多查询?【问题... 查看详情

哪个更快?组合或多个查询?(代码片段)

在使用1millionrecord的表格中,这些查询与性能有什么不同?id是PRIMARYuserid是INDEXEDname是UNIQUE组合查询:$Query='SELECTname,(SELECTEXISTS(SELECTidFROMreportsWHEREuserid=1))ASstatusFROMusersWHEREid=1LIMIT1';$stmt->prepare($Query 查看详情

Android SQLite:哪个查询(“query”或“rawQuery”)更快?

】AndroidSQLite:哪个查询(“query”或“rawQuery”)更快?【英文标题】:AndroidSQLite:Whichquery("query"or"rawQuery")isfaster?【发布时间】:2012-02-0811:40:48【问题描述】:我正在开发一个android数据库应用程序。我只想知道哪... 查看详情

objectForPrimaryKey 与过滤查询(匹配主键)性能,哪个对大数据更快?

】objectForPrimaryKey与过滤查询(匹配主键)性能,哪个对大数据更快?【英文标题】:objectForPrimaryKeyvsfilteredquery(tomatchprimarykey)performance,whichoneisfasterforlargedata?【发布时间】:2021-03-1910:25:05【问题描述】:这里我举个例子classTestReal... 查看详情

在 Oracle 中搜索哪个更快

】在Oracle中搜索哪个更快【英文标题】:WhichisquickerforsearchesinOracle【发布时间】:2012-05-1616:58:59【问题描述】:我正在尝试加速数据库应用程序,我目前正在寻找对应用程序影响较小的简单方法。我想知道什么是搜索字符串是否... 查看详情

子查询或 leftjoin with group by 哪个更快?

】子查询或leftjoinwithgroupby哪个更快?【英文标题】:subqueryorleftjoinwithgroupbywhichoneisfaster?【发布时间】:2011-11-1312:35:39【问题描述】:我必须在我的应用程序中使用总计列显示运行总计..​​.所以我使用以下查询来查找运行总计.... 查看详情

MySQL:在 1:N 关系中哪个更快?加入还是两个查询? [复制]

】MySQL:在1:N关系中哪个更快?加入还是两个查询?[复制]【英文标题】:MySQL:Whichoneisfasterin1:Nrelationships?Joinortwoqueries?[duplicate]【发布时间】:2013-12-3103:48:12【问题描述】:考虑由main_table_id链接的两个表:http://www.zigdigital.com.br/do... 查看详情

分页结果集中的选择子查询或左外连接哪个更快

】分页结果集中的选择子查询或左外连接哪个更快【英文标题】:Whichisfasteraselectsub-queryoraleftouterjoininapaginatedresultset【发布时间】:2011-11-0901:14:31【问题描述】:使用MSSQL查询时,从计算表中获取单个列并将其连接到结果集的最... 查看详情

Oracle的IN vs OR,哪个更快?

】Oracle的INvsOR,哪个更快?【英文标题】:INvsORofOracle,whichfaster?【发布时间】:2011-09-2418:53:48【问题描述】:我正在开发一个应用程序来处理Oracle数据库中的许多数据。在某些情况下,我必须根据给定的条件列表获取许多对象,... 查看详情

如果我们将“Where”放在联接表中或放在最后,哪个查询更快?

】如果我们将“Where”放在联接表中或放在最后,哪个查询更快?【英文标题】:WhichQueryisfasterifweputthe"Where"insidetheJoinTableorputitattheend?【发布时间】:2014-01-1005:42:43【问题描述】:好的,我正在使用MysqlDB。我有两张简单... 查看详情

oracle里countcount(*)和count(主键)哪个更快

...个普遍的问题就是Oracle里count(*)、count(1)和count(主键)到底哪个快的问题。这个问题看起来很简单,每个人都会有自己的答案,去百度上搜会出来一大堆帖子来讲哪个更快。但是老猫说了它们三个其实是一样的,我听到之后也觉得... 查看详情

哪个查询更快:在 Amazon Redshift 中使用 order by 时 top X 或 limit X

】哪个查询更快:在AmazonRedshift中使用orderby时topX或limitX【英文标题】:Whichqueryisfaster:topXorlimitXwhenusingorderbyinAmazonRedshift【发布时间】:2017-06-1606:03:22【问题描述】:3个选项,在由时间戳插入的事件表上。哪个查询更快/更好?Sel... 查看详情

哪个更快/更高效——大量的小 MySQL 查询或一个大的 PHP 数组?

】哪个更快/更高效——大量的小MySQL查询或一个大的PHP数组?【英文标题】:Whichisfaster/moreefficient-lotsoflittleMySQLqueriesoronebigPHParray?【发布时间】:2012-08-1614:10:11【问题描述】:我有一个基于PHP/MySQL的Web应用程序,它通过名为langua... 查看详情

这两个sql查询语句哪个更快?

...name列like'%b%'所对应的TableB的value有这两个sql语句,哪个效率更高呢?A:selectb.valuefromTableAa,TableBwherea.id=b.idanda.namelike'%b%';B:selectvaluefromTableBwhereidin(selectidfromTableAwherenamelike'%b%');说明理由,还有就是如何看一个语句... 查看详情

哪个更快 - 游标或 ArrayList?

】哪个更快-游标或ArrayList?【英文标题】:Whatisfaster-aCursororArrayList?【发布时间】:2015-07-1111:11:11【问题描述】:我有一个SQLite数据库,我必须不断地从中检索数据。每次检索之间可能会对数据进行更改。我的目标是最大化应用... 查看详情