0

这不是问题,但它属于站点优化。我有 110K 的酒店记录。当我使用 SELECT something 查询时,它会从 110k 记录中提取数据。

如果我搜索超过 3 星级的酒店列表,价格在 100 - 300 美元之间,并且在墨西哥城内。假设我得到了 45 个匹配结果。

当我添加更多细化时,还有其他方法吗,它只会从 45 个匹配中提取数据,而不是与 110K 数据一起使用?

4

4 回答 4

1

关键是我的朋友的索引...确保您拥有 WHERE 中使用的所有项目的索引,这将减少选择时的基数...

另一方面,110k 行对于 MySQL 来说仍然是一个非常小的数据集,因此如果您没有在表上获得正确的索引,则不应该造成太大的性能问题。

于 2012-06-19T11:45:35.870 回答
0

这更多地取决于您的数据更新频率。

看。

  1. MySQL 查询缓存
  2. MySQL 中的查询缓存
  3. 缓存问题 MySQL 或文件系统

我是说当我添加更多细化时还有其他方法吗,它只会从 45 个匹配项中提取数据,而不是与 110K 数据一起使用。

然后查看这 45 行并对其应用查询。

于 2012-06-19T11:45:11.660 回答
0

使用查询创建视图

Create view refined as select * from ....

然后向该视图添加更多选择查询,例如

 Select * from refined where ...
于 2012-06-19T11:45:28.730 回答
0

首先,我倾向于同意Brian的观点,索引很重要。

  1. 检查哪种查询最频繁,并相应地在表上构建多列索引。请注意,索引中列的顺序确实很重要(因为索引是一棵树,第一列出现在树根中,所以如果您的查询不使用该列 - 整个树是无用的)。

  2. 启用慢查询日志以查看哪些查询实际上需要很长时间(如果有),或者不使用索引,以便您可以随着时间的推移改进索引。

话虽如此,如果您的表数据大部分是读取的,那么查询缓存是一个真正的性能提升。这是一篇关于 mysql 查询缓存的有用文章。

于 2012-06-19T11:53:44.180 回答