0

我们正在使用一个总共有大约 150,000 条记录(名称)的 mysql 数据库。我们对“名称”字段的搜索是通过 php.ini 中的自动完成功能完成的。我们已经为表格编制了索引,但仍然觉得搜索有点迟缓(整整几秒钟,而谷歌财经之类的东西几乎可以立即响应)。我们提出了两种可能性,但希望获得更多见解:

  1. 我们是否可以创建一堆(数千或更多)存储过程来加快搜索速度,或者创建那么多存储过程会使数据库陷入困境?

  2. 对于“选择”语句,是否有比 mysql 更快的替代方法(插入和更新行的速度并不是很重要,所以我们可以在必要时牺牲它)。我隐约听说过 BigTable 和其他不支持 JOIN 语句的语句……我们需要 JOIN 语句来处理我们所做的其他一些查询。

谢谢

4

3 回答 3

1
  1. 忘记存储过程。他们不会对你有任何好处。
  2. Mysql 是不错的选择,它通常被认为是最快的 RDBMS。并且没有必要寻找“选择语句的更快替代方案”。

您提到的异常查询执行时间是服务器配置错误或数据库架构错误或两者兼而有之的结果。请阅读有关 serverfault 的回复或在此处更新您的问题:提供服务器配置、部分数据库架构和问题查询以及explain select ...

于 2011-01-18T09:02:38.620 回答
0

您需要将信息缓存在内存中,以避免重复调用数据库。

于 2011-01-18T00:56:29.373 回答
0

是的,如果您更改数据,则需要使缓存过期,但正如您所说,这并不常见,因此您甚至可以在半自动的基础上执行此操作,而无需担心必要时。您应该查看这篇 MySQL.com 文章,或许还可以探索 MEMORY 存储引擎(抱歉,新的并且每个帖子不能发布多个超链接?!)这需要一些编码才能使用,但可以效率极高。

实际查询时间(相对于页面时间)是多少?在一个没有被加载到地狱的相当现代的服务器上,MySQL 应该能够对 150k 行执行自动完成查询,比两秒快得多。缺少一些索引?

于 2011-01-18T02:33:34.750 回答