【发布时间】:2014-09-20 00:02:03
【问题描述】:
我正在使用一个相当大的数据库(超过 500+ 百万个条目),并且正在尝试优化搜索引擎。
我的主表如下:
项目 (id,混合,值)
mixed 包含与此项目相关的关键字(例如:“Jason Bourne 很酷”)。我想要做的是填充两个新表:
item_terms (id, 术语)
item_term_results (id, item_terms_id, items_id)
来自主表项。我已经编写了一个 MySQL 过程,循环遍历这个主表中的所有结果,遵循这个算法:
- 拆分项目.mixed
- 遍历我们得到的值:
- 在 item_terms 中插入值
- 在 item_term_results 中插入新结果,将 items.id 放入 item_term_results.items_id 和 item_term_results 中的 last_inserted_id() 中
- 遍历我们得到的值:
问题是,该过程需要方式太多时间来处理。有了这么多数据,这个过程需要 150 天才能完成,即使我们在一个非常强大的服务器上,这也太长了。
知道如何做到这一点吗?我们这样做基本上是为了让搜索比简单的like 快很多,因为 item_terms.item 中的值是唯一的。
谢谢
【问题讨论】:
标签: mysql performance search insert procedure