Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL语句已执行或从未执行完毕,冻结SQL数据库_Sql Server_Performance - Fatal编程技术网

Sql server SQL语句已执行或从未执行完毕,冻结SQL数据库

Sql server SQL语句已执行或从未执行完毕,冻结SQL数据库,sql-server,performance,Sql Server,Performance,我有一个SQL语句 SELECT dbo.sem_computer.COMPUTER_NAME,dbo.sem_computer.COMPUTER_ID, [IP_ADDR1_TEXT],dbo.sem_computer.COMPUTER_DOMAIN_NAME, [ID],dbo.SEM_AGENT.AGENT_VERSION FROM sem_computer, [dbo].[V_SEM_COMPUTER], IDENTITY_MAP, SEM_CLIENT,dbo.SEM_AGENT WH

我有一个SQL语句

SELECT dbo.sem_computer.COMPUTER_NAME,dbo.sem_computer.COMPUTER_ID,
[IP_ADDR1_TEXT],dbo.sem_computer.COMPUTER_DOMAIN_NAME, [ID],dbo.SEM_AGENT.AGENT_VERSION
FROM sem_computer, [dbo].[V_SEM_COMPUTER], IDENTITY_MAP, SEM_CLIENT,dbo.SEM_AGENT
WHERE [dbo].[V_SEM_COMPUTER].COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID and dbo.IDENTITY_MAP.ID = dbo.SEM_CLIENT.GROUP_ID
and dbo.SEM_COMPUTER.COMPUTER_ID = dbo.SEM_CLIENT.COMPUTER_ID
AND dbo.SEM_COMPUTER.COMPUTER_ID = dbo.SEM_AGENT.COMPUTER_ID
AND NAME = 'My Company\Default Group'
OR NAME = 'My Company\Bronx'
order by [IP_ADDR1_TEXT]
当我试图复制和粘贴此代码时,它会无限期执行,甚至会冻结SQL server

如果我移除

OR NAME = 'My Company\Bronx'
然后SQL语句执行得很好

我们正在使用SQLServer2008

多谢各位

或名称('My Company\Default Group','My Company\Bronx')

应该有用

当您的名称为“我的公司\默认组”时 OR NAME='My Company\Bronx'不在括号内或使用in子句,这意味着它将在满足OR条件的情况下获取所有内容,而忽略所有其他条件

或名称('My Company\Default Group','My Company\Bronx')

应该有用

当您的名称为“我的公司\默认组”时 OR NAME='My Company\Bronx'不在括号内或使用in子句,这意味着它将在满足OR条件的情况下获取所有内容,而忽略所有其他条件

或名称('My Company\Default Group','My Company\Bronx')

应该有用

当您的名称为“我的公司\默认组”时 OR NAME='My Company\Bronx'不在括号内或使用in子句,这意味着它将在满足OR条件的情况下获取所有内容,而忽略所有其他条件

或名称('My Company\Default Group','My Company\Bronx')

应该有用

当您的名称为“我的公司\默认组”时
OR NAME='My Company\Bronx'不在括号内或使用in子句,这意味着它将在满足OR条件的情况下获取所有内容,而忽略所有其他条件。

如果编写符合ANSI标准的T-SQL,我认为整个问题会变得更加清楚。因此,您没有在WHERE子句中使用able join条件,而是使用如下内容:

SELECT 
    dbo.sem_computer.COMPUTER_NAME
,   dbo.sem_computer.COMPUTER_ID
,   [IP_ADDR1_TEXT]
,   dbo.sem_computer.COMPUTER_DOMAIN_NAME
,   [ID]
,   dbo.SEM_AGENT.AGENT_VERSION
FROM
sem_computer AS COM
INNER JOIN
[dbo].[V_SEM_COMPUTER] AS V
ON
COM.COMPUTER_ID = V.COMPUTER_ID
INNER JOIN
dbo.SEM_CLIENT AS CLI
ON
COM.COMPUTER_ID = CLI.COMPUTER_ID
INNER JOIN
dbo.SEM_AGENT AS AGT
ON
COM.COMPUTER_ID = AGT.COMPUTER_ID
INNER JOIN
IDENTITY_MAP AS IM
ON
CLI.GROUP_ID = IM.ID

然后WHERE子句完成了它的设计任务,即过滤数据。正如前面所建议的那样,这将成为

WHERE
NAME IN('My Company\Default Group','My Company\Bronx')
正如前面所指出的,您遇到的性能问题是,您得到了所有表的交叉连接。但我想如果您以符合ANSI的方式编写联接,您会注意到这一点

我希望这有帮助


Ash

我认为,如果编写符合ANSI标准的T-SQL,整个问题就会变得更加清楚。因此,您没有在WHERE子句中使用able join条件,而是使用如下内容:

SELECT 
    dbo.sem_computer.COMPUTER_NAME
,   dbo.sem_computer.COMPUTER_ID
,   [IP_ADDR1_TEXT]
,   dbo.sem_computer.COMPUTER_DOMAIN_NAME
,   [ID]
,   dbo.SEM_AGENT.AGENT_VERSION
FROM
sem_computer AS COM
INNER JOIN
[dbo].[V_SEM_COMPUTER] AS V
ON
COM.COMPUTER_ID = V.COMPUTER_ID
INNER JOIN
dbo.SEM_CLIENT AS CLI
ON
COM.COMPUTER_ID = CLI.COMPUTER_ID
INNER JOIN
dbo.SEM_AGENT AS AGT
ON
COM.COMPUTER_ID = AGT.COMPUTER_ID
INNER JOIN
IDENTITY_MAP AS IM
ON
CLI.GROUP_ID = IM.ID

然后WHERE子句完成了它的设计任务,即过滤数据。正如前面所建议的那样,这将成为

WHERE
NAME IN('My Company\Default Group','My Company\Bronx')
正如前面所指出的,您遇到的性能问题是,您得到了所有表的交叉连接。但我想如果您以符合ANSI的方式编写联接,您会注意到这一点

我希望这有帮助


Ash

我认为,如果编写符合ANSI标准的T-SQL,整个问题就会变得更加清楚。因此,您没有在WHERE子句中使用able join条件,而是使用如下内容:

SELECT 
    dbo.sem_computer.COMPUTER_NAME
,   dbo.sem_computer.COMPUTER_ID
,   [IP_ADDR1_TEXT]
,   dbo.sem_computer.COMPUTER_DOMAIN_NAME
,   [ID]
,   dbo.SEM_AGENT.AGENT_VERSION
FROM
sem_computer AS COM
INNER JOIN
[dbo].[V_SEM_COMPUTER] AS V
ON
COM.COMPUTER_ID = V.COMPUTER_ID
INNER JOIN
dbo.SEM_CLIENT AS CLI
ON
COM.COMPUTER_ID = CLI.COMPUTER_ID
INNER JOIN
dbo.SEM_AGENT AS AGT
ON
COM.COMPUTER_ID = AGT.COMPUTER_ID
INNER JOIN
IDENTITY_MAP AS IM
ON
CLI.GROUP_ID = IM.ID

然后WHERE子句完成了它的设计任务,即过滤数据。正如前面所建议的那样,这将成为

WHERE
NAME IN('My Company\Default Group','My Company\Bronx')
正如前面所指出的,您遇到的性能问题是,您得到了所有表的交叉连接。但我想如果您以符合ANSI的方式编写联接,您会注意到这一点

我希望这有帮助


Ash

我认为,如果编写符合ANSI标准的T-SQL,整个问题就会变得更加清楚。因此,您没有在WHERE子句中使用able join条件,而是使用如下内容:

SELECT 
    dbo.sem_computer.COMPUTER_NAME
,   dbo.sem_computer.COMPUTER_ID
,   [IP_ADDR1_TEXT]
,   dbo.sem_computer.COMPUTER_DOMAIN_NAME
,   [ID]
,   dbo.SEM_AGENT.AGENT_VERSION
FROM
sem_computer AS COM
INNER JOIN
[dbo].[V_SEM_COMPUTER] AS V
ON
COM.COMPUTER_ID = V.COMPUTER_ID
INNER JOIN
dbo.SEM_CLIENT AS CLI
ON
COM.COMPUTER_ID = CLI.COMPUTER_ID
INNER JOIN
dbo.SEM_AGENT AS AGT
ON
COM.COMPUTER_ID = AGT.COMPUTER_ID
INNER JOIN
IDENTITY_MAP AS IM
ON
CLI.GROUP_ID = IM.ID

然后WHERE子句完成了它的设计任务,即过滤数据。正如前面所建议的那样,这将成为

WHERE
NAME IN('My Company\Default Group','My Company\Bronx')
正如前面所指出的,您遇到的性能问题是,您得到了所有表的交叉连接。但我想如果您以符合ANSI的方式编写联接,您会注意到这一点

我希望这有帮助


Ash

我假设您需要在两个条件周围加上括号:
和(NAME='My Company\Default Group'或NAME='My Company\Bronx')
,因为您会得到类似于交叉连接的结果。请参阅@NickyvV的建议。我假设您需要在两个条件周围加上括号:
和(NAME='My Company\Default Group'或NAME='My Company\Bronx')
,因为您会得到类似交叉连接的结果。请参阅@NickyvV的建议。我假设您需要在两个条件周围加上括号:
和(NAME='My Company\Default Group'或NAME='My Company\Bronx')
,因为您会得到类似交叉连接的结果。请参阅@NickyvV的建议。我假设您需要在两个条件周围加上括号:
和(NAME='My Company\Default Group'或NAME='My Company\Bronx')
,因为您会得到类似交叉连接的结果。请参阅@NickyvV的建议。我删除了别名,因为它们给出了错误,例如“多部分标识符”dbo.sem_computer.computer_NAME“无法绑定”。我删除了别名,因为它们给出了错误,例如“多部分标识符”dbo.sem_computer.computer_NAME“无法绑定”我删除了别名,因为它们给出了错误,例如“多部分标识符”dbo.sem_computer.computer_NAME“无法绑定”。我删除了别名,因为它们给出了错误,例如“多部分标识符”dbo.sem_computer.computer_NAME“无法绑定”