Sql server SQL查询中的多连接

Sql server SQL查询中的多连接,sql-server,join,timeout,Sql Server,Join,Timeout,我试图从多个表运行一个查询,但是我遇到了一个问题,查询只需要10分钟就可以提供3条记录。查询如下: select TOP 100 pm_entity_type_name, year(event_date), pm_event_type_name, pm_event_name, pm_entity_name, pm_entity_code, event_priority, event_cost from pm_event_priority, pm_entity, p

我试图从多个表运行一个查询,但是我遇到了一个问题,查询只需要10分钟就可以提供3条记录。查询如下:

select TOP 100 pm_entity_type_name, year(event_date), 
      pm_event_type_name, pm_event_name, pm_entity_name, 
      pm_entity_code, event_priority, event_cost 

from pm_event_priority, pm_entity, pm_entity_type, pm_event_type, pm_event 

where pm_event.pm_event_id = pm_event_priority.pm_event_id 
   And pm_entity.pm_entity_id = pm_event_priority.pm_entity_id 
   And pm_entity_type.pm_entity_type_id = pm_entity.pm_entity_type_id  
   And pm_event_type.pm_event_type_id = pm_event_priority.pm_event_type_id  
   And ( pm_entity.pm_entity_type_id = '002LEITUU0005T8EX40001XFTEW000000OZX' OR
         pm_entity_type.parent_id= '002LEITUU0005T8EX40001XFTEW000000OZX' ) 
ORDER BY 1,2,3

我想知道,是否有任何方法可以修改此查询以可能使查询更快一些?

当您必须将许多大型表连接在一起时,尤其是当连接列没有正确索引时,查询性能会下降。在您的情况下,我怀疑您的表相当大(许多行),并且
\u id
列没有索引


如果您使用的是SQLServerManagementStudio,则可以单击“显示估计的执行计划”,查看查询优化器如何解释您的查询。如果您看到一堆表扫描,而不是索引扫描/查找,这意味着SQL Server必须读取表中的每一行;表演噩梦!尝试在每个表的
\u id
列上放置一些索引(可能是聚集索引),和/或使用数据库引擎优化顾问自动推荐应用于表的最佳索引结构,以提高此查询的性能。

您需要查看查询计划。请参阅如何获取它

一旦你有了一个查询计划,看看你是否能从列表中看出什么是如此缓慢。由于缺少索引,可能会出现表扫描


如果您拿出
前100名
并使用相同的标准执行
选择*
,会发生什么情况?如果返回的数据量太大,则可能缺少联接条件。

表上有哪些索引?