针对大型数据库优化ms sql select查询
我的问题是针对大型数据库优化ms sql select查询,sql,sql-server,select,optimization,Sql,Sql Server,Select,Optimization,我的问题是 SELECT DISTINCT Company.Name, Customer.FirmID, Customer.ID, Customer.ExtendedId, (CustomerExtended.FirstName + ' ' + CustomerExtended.LastName) as "Customer Name" FROM Company, Customer, CustomerExtended WHERE
SELECT DISTINCT
Company.Name,
Customer.FirmID,
Customer.ID,
Customer.ExtendedId,
(CustomerExtended.FirstName + ' ' + CustomerExtended.LastName) as "Customer Name"
FROM
Company,
Customer,
CustomerExtended
WHERE
(Customer.ExtendedId = 1) OR
(CustomerExtended.FirstName = 'John' AND CustomerExtended.LastName = 'Smith')
由于数据库非常庞大,我一次也没能执行这个查询evan。我等了两个小时,但它一直在运行。有没有办法对此进行优化?除非您的客户群是每一个人,否则我怀疑您的数据库实际上“非常庞大”,因此我认为您可能需要
加入表以获得所需的结果
例如:
有关联接的解释,请参阅。除非您的客户群是每一个人,否则我怀疑您的数据库实际上“非常庞大”,因此我认为您可能需要联接表以获得所需的结果
例如:
有关联接的解释,请参阅。如果需要使用DISTINCE,则可能是做错了什么。在这种情况下,您没有加入表(或者没有正确加入表,您所做的被称为交叉加入)
id应该是主键,fk列应该是指向主键的外键如果需要区分,可能是做错了什么。在这种情况下,您没有加入表(或者没有正确加入表,您所做的被称为交叉加入)
id应该是主键,fk列应该是指向主键的外键是否确实需要交叉联接?它将组合每个表中的每一行,然后应用where条件。如果有许多行,则可以启动一个族,直到If完成。您应该发布示例数据和预期结果。SQL查询似乎显示出对关系数据库的工作方式缺乏了解。您真的需要交叉联接吗?它将组合每个表中的每一行,然后应用where条件。如果有许多行,您可以启动一个族,直到If完成。您应该发布示例数据和预期结果。SQL查询似乎表明对关系数据库的工作方式缺乏了解。
FROM
Company
inner join Customer on Company.CompanyID = Customer.FirmID
...
SELECT
com.Name,
cus.FirmID,
cus.ID,
cus.ExtendedId,
cue.FirstName + ' ' + cue.LastName as [Customer Name]
FROM Company com
JOIN Customer cus
ON com.id = cus.fk_Company
JOIN CustomerExtended cue
ON cue.fk_Customer = cus.id
WHERE
(cus.ExtendedId = 1) OR
(cue.FirstName = 'John' AND cue.LastName = 'Smith')