现在的业务是,房东按日期发布可出租的房源,比如他选择7月份的1号到20号、8月份的1号到25号可以出租房源,然后每天的出租价格可能不一样。
现在用户可以选择时间范围(入住和离开日期)、价格进行查询。
怎么设计表以及其他方案使查询高效??
假设有100万用户
这个不是很普通的结构吗,日期可以用大小来比较,价格也可以用大小来比较,select * from XXX where date > '2017-03-07' and date < 'XXXX-XX-XX' and price > XX and price < XXX就好了。
100万又不是多大的数据,正常查就好了
建议使用json字符串存储时间和租金关系
比如:
7月1日到7月20日,每天100元;7月21日到8月1日,每天200元
时间和租金关系,为字段 dateForRent
dateForRent的值:20170701-20170720:100;20170721-20170801:200
这样的话,动态扩展,比较方便,之前有两个阶梯租金,现在是三个阶梯租金,不需要加字段直接修改值即可
具体的解析,在java程序里根据各种阶梯判断
效率的话,因为是和房源关联,而不是和用户关联,所以效率也不错
可以给一些必要的字段上添加索引(比如时间),索引可以使查询更高效。但要注意的是,在写时因为要维护索引所以速度会较慢。