2010-12-15 58 views
2

我正試圖選擇房地產網站中給定房產的前十個最相似的屬性,我想知道你們是否可以幫助我。我正在使用的變量是price(int),area(int),bathroom(int),bedrooms(int),suites(int),parking(int)。目前我正在考慮由ABS(a-b)訂購,但如果我必須計算每次查看房產時都不會很慢。 (由於數據庫不斷更新,我不確定我能緩存這個)還有其他選擇嗎?MySQL中的類似行

感謝您的幫助!

+0

如果您擔心它的速度,是否可以不添加它作爲另一個字段,並將其更新。也許通過觸發器? – Orbling 2010-12-15 15:30:09

回答

2

一個解決方案可能是創建一個包含結果的新表。像這樣的: -

property_id similar_properties_ids 
-------------------------------------- 
1    2,5,8 
2    3,10 
... 
... 

,並定期運行做計算的所有屬性,並填補了similar_properties_ids一個cron。

所以,在運行時,您沒有計算開銷,但缺點是您得到的結果有點舊(在上次cron運行期間更新)。

+0

該數據庫結構沒有幫助 - 最好將類似屬性的ID保留在表的不同行中。 – 2010-12-15 18:36:06

+0

此表僅用於在運行時收集相關屬性的ID。存儲屬性的原始表格完好無損。當ID存在時,如果需要關於相關屬性的任何信息,可以使用這些ID查詢這些實際表。您可以爲表中的每個property_id的similar_properties_id分別創建一行,但隨後您的更新和檢索查詢會變得有點複雜。 – 2010-12-15 18:44:35