MySQL中的类似行

MySQL中的类似行,mysql,similarity,Mysql,Similarity,我正在为一个房地产网站上的一个给定的房产选择十大最相似的房产,我想知道你们是否能帮我。我处理的变量是价格(int)、面积(int)、浴室(int)、卧室(int)、套房(int)、停车场(int)。目前,我正在考虑按ABS(a-b)排序,但如果每次查看一处房产时都要计算,那不是很慢吗?(由于数据库不断更新,我不确定是否可以将其缓存)还有其他选择吗 谢谢你的帮助 一种解决方案可以是创建一个包含结果ready的新表。像这样:- property_id similar_properties_id

我正在为一个房地产网站上的一个给定的房产选择十大最相似的房产,我想知道你们是否能帮我。我处理的变量是价格(int)、面积(int)、浴室(int)、卧室(int)、套房(int)、停车场(int)。目前,我正在考虑按ABS(a-b)排序,但如果每次查看一处房产时都要计算,那不是很慢吗?(由于数据库不断更新,我不确定是否可以将其缓存)还有其他选择吗


谢谢你的帮助

一种解决方案可以是创建一个包含结果ready的新表。像这样:-

property_id    similar_properties_ids
--------------------------------------
1              2,5,8
2              3,10
...
...
以及一个定时运行的cron,对所有属性进行计算,并填充
类似的属性\u id


因此,在运行时,您没有计算开销,但缺点是您得到的结果有点旧(在上一次cron运行期间更新)。

如果您担心它的速度,您是否可以将其添加为另一个字段,并将其键入updated。可能是通过触发器?该数据库结构没有帮助-最好将类似属性的ID保留在表的单独行中。此表仅用于在运行时收集相关属性的ID。存储属性的原始表是完整的。当ID存在时,如果需要有关相关属性的任何信息,可以使用这些ID查询这些实际表。您可以为此表中的每个属性id为类似的属性id创建一行,但是更新和检索查询会变得有点复杂。