Я использую левое соединение, чтобы проверить, сохранены ли определенные типы данных в базе данных.Эффективность левого соединения при использовании IS NULL
Мне интересно, будет ли потрачено много ресурсов, если объединенная таблица содержит много строк, которые соответствуют предложению JOIN.
т.е .:
SELECT Applications.*
FROM Applications
LEFT JOIN SomeFeatureRows ON (SomeFeatureRows.ApplicationId = Applications.Id)
WHERE SomeFeatureRows.Id IS NULL;
ли сканировать БД через все строки в SomeFeatureRows
, чтобы увидеть, если есть строка, где находится Id
NULL
?
Я просто хочу проверить, есть ли строка или нет в этой таблице (с указанным идентификатором приложения).
Edit, могли бы также включать реальное утверждение SQL:
SELECT organizations.id AS OrganizationId,
organizations.Name,
Application.Id as ApplicationId,
Application.Name as ApplicationName,
Account.id AS AccountId,
Account.Email,
Account.Username ,
SentEmails. SentAtUtc
FROM organizations
INNER JOIN applications ON (organizations.id = applications.organizationid)
LEFT JOIN Incidents ON (organizations.id = Incidents.organizationid)
LEFT JOIN SentEmails ON (organizations.id = SentEmails.organizationid AND EmailTypeName = 'IncidentsReminder')
CROSS apply (SELECT accounts.id,
accounts.email,
accounts.username
FROM accounts,
organizationmembers
WHERE accounts.id = organizationmembers.accountid
AND organizationmembers.organizationid =
organizations.id)
Account
WHERE Incidents.id IS NULL
Не забывайте, что вы можете проверить план выполнения, чтобы узнать, что произойдет. –