我很困惑地问这个问题。如有任何疑问,请告诉我。我不知道怎么问。
我在MYSQL数据库中有超过90000个酒店列表。如果我通常搜索特定城市的酒店,它会从90000结果中获取列表。我想对特定城市的酒店进行排序。出于这个原因,我通常使用过滤查询,但现在我注意到从90000列表中取出结果需要花费很多时间。我认为如果我搜索纽约市内的酒店会更好,它将从90000个列表返回56家酒店,之后过滤,如价格,评级等,将只搜索56个列表。在MYSQL中有什么方法可以撤出酒店。它可能被称为虚拟表或视图,我不知道。请帮我解决。
答案 0 :(得分:1)
您可以在一个查询中完成所有过滤和排序,但需要向基础添加索引。
http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
90 000行:那是一张小桌子。通常处理十倍以上,并在10毫秒内得到结果。
答案 1 :(得分:0)
好吧,你可以随时使用一个视图:
CREATE VIEW ny_hotels AS
SELECT price, range, etc FROM hotels WHERE city = 'NY'
...然后像普通表一样查询此视图:
SELECT price, rating FROM ny_hotels WHERE hotel_id = @some_hotel_id
但我可以建议将主表中的city
列编入索引吗?