0

我正在建立某种房屋预订网站,并且我正在寻找一些可以根据房屋可用性日期过滤对象的搜索引擎/数据库算法

所以假设我有 House1(可用日期:Jan1...Jan7、Jan20、Jan23)

如果我查询所有对象的日期 Jan2-Jan3 - 我应该找到那个对象,如果我查询 Jan6-Jan8 - 我应该找到它

(注意:在数据库中我有数千个对象以及各种搜索过滤器,搜索应该很快)

4

1 回答 1

0

使用 SQL 中的索引处理“数千个对象”需要几毫秒。我知道在 MySQL / SQL-Server 中执行以下操作很简单。

结构:(伪代码)

House(ID INT, ...)
Availability(ID INT, HouseID INT, Start DATETIME, Finish DATETIME)
/* Index on Availability (Start, Finish) */

询问:

SELECT DISTINCT H.ID, ...
FROM House H JOIN Availability A ON A.HouseID = H.ID
WHERE A.Start <= @DesiredFinish AND @DesiredStart <= A.Finish

这将返回与指定日期重叠的所有房屋。

于 2012-12-21T14:24:21.913 回答