Mysql查询优化和排序

时间:2012-04-27 13:15:14

标签: mysql

我很困惑地问这个问题。如有任何疑问,请告诉我。我不知道怎么问。

我在MYSQL数据库中有超过90000个酒店列表。如果我通常搜索特定城市的酒店,它会从90000结果中获取列表。我想对特定城市的酒店进行排序。出于这个原因,我通常使用过滤查询,但现在我注意到从90000列表中取出结果需要花费很多时间。我认为如果我搜索纽约市内的酒店会更好,它将从90000个列表返回56家酒店,之后过滤,如价格,评级等,将只搜索56个列表。在MYSQL中有什么方法可以撤出酒店。它可能被称为虚拟表或视图,我不知道。请帮我解决。

2 个答案:

答案 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列编入索引吗?