我希望加快查询速度(或用其他流程替换):
UPDATE en_pages, keywords
SET en_pages.keyword = keywords.keyword
WHERE en_pages.keyword_id = keywords.id
table en_pages具有正确的结构,但其中只包含非唯一的page_ids和keyword_ids。我正在尝试将实际的关键字(字符串)添加到此表中,它们与keyword_ids匹配。表en_pages中有2500万行需要更新。
我正在添加关键字,以便可以实时查询这一个表并返回关键字(连接显然对于“实时”来说太慢了。)
我们将此查询(以及其他一些查询)应用于较大数据集的子单元。我们经常这样做,为不同的用户群创建我们数据的特定子单元的自定义界面(对不起,如果这令人困惑)。
如果你给它一个小时的运行,这一切都可以正常运行,但我正试图加快速度。有没有更好的方法来使用php和/或mysql更快?
答案 0 :(得分:2)
我实际上认为你不能加快这个过程。
您仍然可以通过插入新服务器为数据库添加残酷的电源。
答案 1 :(得分:1)
也许我错了或误解了这个问题,但是......
你不能用 TRIGGERS 吗?
就像...当在“en_pages”上检测到新的INSERT时,在同一行之后执行UPDATE?
(我不知道INSERTS在该表中的频率如何)
这只是一个想法
插入后“en_pages.keyword”和“en_pages.keyword_id”的变化频率是多少?!?!?
答案 2 :(得分:0)
我不了解mySQL,但如果你在循环中一次处理有限数量的记录(比如1000),这种事情通常会在SQL Server中运行得更快。
您也可以考虑使用where子句(我不知道mySQL使用的“不等于”,所以我使用了SQL Server版本):
WHERE en_pages.keyword <> keywords.keyword
通过这种方式,您只更新在您更新的字段中存在差异的记录,而不是更新所有记录。