从查询中获取大致搜索结果数量的最佳方法是什么?

时间:2009-03-02 01:20:14

标签: php mysql search approximation

更多地描述它,如果我有一个区域的图像映射,当点击时,会执行查询以获得有关该区域的更多信息。

我的客户希望我显示一个近似值将鼠标悬停在该区域图像映射上时的搜索结果数量。

我的问题是如何缓存?或者在没有大量耗尽服务器内存资源的情况下获得该号码?

顺便说一句,如果这是必要的信息,使用php和mysql。

4 个答案:

答案 0 :(得分:2)

您可以定期执行查询,然后存储结果(例如,在不同的表中)。

结果不是绝对最新的,但可能是一个很好的近似值,可以减少服务器上的负载。

答案 1 :(得分:1)

MySQL可以为您提供查询返回的大致行数,而无需实际运行查询。这就是EXPLAIN的语法。

在'SELECT'之前使用'EXPLAIN'运行查询,然后将所有结果乘以rows列。

准确性变化很大。它可能适用于某些类型的查询,但对其他查询则无用。它利用MySQL优化器保存的数据统计信息。

注意:定期(即每月一次)在表格上使用ANALYZE TABLE可能有助于提高这些估算的准确性。

答案 2 :(得分:0)

您可以使用区域的id创建另一个表,然后创建一个在慢速时间(例如夜晚)在所有区域上运行的脚本,并使用数据填充此额外表。

然后,当您悬停时,您将从此新表中获取ID,并且最多只能保留一天。

问题可能在于你没有慢的时间,或者在夜间完成的磨合需要很长时间并且过程很重。

编辑您的评论。

如果可以,请选择大区域或国家/地区,在您选择的SQL浏览器中查询该区域,并查看所需的时间。

如果情况太多,你可以分发它,以便某些国家将在某些时间执行,小国家和大国一起执行。

答案 3 :(得分:0)

您是否担心在滚动事件发生时您根本不想访问数据库以获取此信息,或者您认为查询速度太慢并且您想要数据库中的信息,但更快?

如果您的查询速度较慢,可以对其进行调整,或者使用已经提供的其他一些建议。

或者,为了避免数据库完全被击中,似乎您在此地图上拥有有限数量的区域,并且您可以定期对所有区域运行查询并将数字保留在内存中。