Вопрос оптимизации SQL - PullRequest
       9

Вопрос оптимизации SQL

3 голосов
/ 02 февраля 2012

У меня есть две таблицы. Одна таблица содержит информацию об активах, другая таблица об их отношении. Как я могу оптимизировать текущий запрос и получить аналогичные результаты.

SELECT a1.ID FROM Asset a1
WHERE a1.AssetId =
(SELECT r.DestinationAssetId
FROM Relation r
INNER JOIN Asset a2 ON a2.AssetId = r.SourceAssetId
WHERE a2.ID = '1112174' and r.RelationshipType = 'Video File')

Результаты: 13412331 (идентификатор актива, который связан с a2.ID = '1125574')

Лично мне не нравится этот глупый подзапрос, могу ли я как-нибудь избежать его и оптимизировать этот запрос.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 02 февраля 2012

Вы можете потерять подзапрос:

SELECT dest.ID 
FROM 
Asset src
JOIN Relation r ON src.AssetId = r.SourceAssetId
JOIN Asset dest ON dest.AssetID = r.DestinationAssetID
WHERE src.ID = '1112174' and r.RelationshipType = 'Video File'

Это не очень оптимистично для производительности, но немного аккуратнее.

2 голосов
/ 02 февраля 2012

На первый взгляд, похоже, что это сделало бы то же самое:

SELECT a1.ID
FROM Relation r
INNER JOIN Asset a2 ON a2.AssetId = r.SourceAssetId
INNER JOIN Asset a1 ON a1.AssetId = r.DestinationAssetId
WHERE a2.ID = '1112174' and r.RelationshipType = 'Video File'
1 голос
/ 02 февраля 2012

Попробуйте это:

SELECT a1.ID
FROM Asset a1
INNER JOIN Relation r ON a1.AssetId = r.DestinationAssetId
INNER JOIN Asset a2 ON a2.AssetId = r.SourceAssetId
WHERE a2.ID = '1112174' and r.RelationshipType = 'Video File'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...