有一个有趣的 SQL 大师在那里。现在这个搜索只需要几秒钟,但它非常密集,必须有更好的方法。可能是我期望太高了?
简单的假期搜索应用程序。200 万假期。分页/排序大约 600,000 行。
这是表的架构
CREATE TABLE [dbo].[Holiday](
[Id] [int] NOT NULL,
[PropertyId] [int] NOT NULL,
[Price] [int] NOT NULL,
[Rating] [int] NOT NULL,
[Country] [char](2) NOT NULL,
[ResortId] [int] NOT NULL,
[DepartureAirport] [char](3) NOT NULL,
[DestinationAirport] [char](3) NOT NULL,
[DepartureDate] [datetime] NOT NULL,
[Basis] [char](2) NOT NULL,
[Duration] [int] NOT NULL,
CONSTRAINT [PK_Holiday] PRIMARY KEY CLUSTERED ([Id] ASC)
)
Run Code Online (Sandbox Code Playgroud)
如您所见,非常简单。我们有属性、价格、持续时间、出发/目的地机场等。现在,提供的字段越多,搜索速度就越快。如果我有出发机场、财产和日期,那么搜索速度非常快。但是,如果我只有一个国家而不是其他任何东西,则需要处理大量数据。
使用我的表格的这个CSV 导出,总共有 200 万行,大约 666k 仅国家代码为 FR,这是我的例子。
这是搜索查询。它返回两个表。第一个是摘要,因此符合您的条件的假期总数以及有多少独特的属性。第二个表包含搜索的实际结果。
--Build a temp table, and store …
Run Code Online (Sandbox Code Playgroud)