mysql存储例程与mysql-alternative?

时间:2011-01-18 00:45:56

标签: mysql database oracle cassandra bigtable

我们使用的mysql数据库总共有大约150,000条记录(名称)。我们在'名称'字段上的搜索是通过php中的自动完成功能完成的。我们将表格编入索引,但仍然觉得搜索有点迟缓(几秒钟就像谷歌财经那样近乎即时响应)。我们提出了两种可能性,但希望获得更多见解:

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

  2. 对于“select”语句,有没有更快的mysql替代方法(插入和更新行的速度不是很重要,所以如果需要我们可以牺牲它)。我模糊地听说过BigTable&其他不支持JOIN语句的人......我们需要一些其他查询的JOIN语句。

  3. thx

3 个答案:

答案 0 :(得分:1)

  1. 忘记存储过程。他们不会对你有任何好处。
  2. Mysql是不错的选择,它通常被认为是最快的RDBMS。而且没有必要寻找'更快的替代选择声明'。
  3. 您提到的异常查询执行时间是服务器配置错误或数据库架构错误或两者兼而有之的结果。请在此处阅读this response on serverfault或更新您的问题:提供服务器配置,数据库架构和问题查询的一部分以及explain select ...

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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