スキーマは少し奇妙です。このようなSQL - 最も安いオプションのリストを生成する
CREATE TABLE [dbo].[Events](
[Id] [int] NOT NULL,
[Name] [varchar](50) NOT NULL,
[VenueId] [int] NULL
)
CREATE TABLE [dbo].[Venues](
[Id] [int] NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[AveragePrice] [int] NOT NULL
)
とデータ:
insert into Venues (Id, Name, AveragePrice) VALUES
(1, 'Arena1', 100),
(1, 'Arena2', 200),
(1, 'Arena3', 50),
(2, 'Club1', 50),
(2, 'Club2', 150)
insert into Events (Id, Name, VenueId) VALUES
(1, 'ConsertAtArena1', 1),
(2, 'ConsertAtArena2', 1),
(3, 'ConsertAtArena3', 1),
(2, 'Conference', NULL)
私は生成する必要があります:'ConsertAtArena3', 'Conference'
私は2つのテーブルを持っています。これは、同じVenueIdとNULL VenueIdを持つすべてのイベントに加えて、同じVenueIdを持つイベントで最も安いVenueオプションです。テーブルは非常に大規模で、数百万行までです。効率的なSELECTを実行するにはどうすればよいでしょうか?
データベースはSQL Server 2012 Standardです。
と平均価格は50と
'Conference'
で'ConcertAtArena3'
を得るだけでなく期待された結果を追加します。 – jarlhあなたが必要とするのは、クエリコストを見るための実行計画です! – Ragul
「ConsertAtArena3」はどのように*最も安い*でしょうか? 3つのコンサートはすべて同じ 'venueId'リファレンスを持っているので、すべて同じ価格です。 –