使用php脚本进行mysql搜索查询的效率

时间:2013-01-15 12:04:57

标签: mysql performance

我希望有人知道mysql和mysql中的查询效率(PHP脚本),可以给我一些指导,以下两种方法更有效。

简化很多事情,我有两个mysql表。

表A = 200个单词,每个单词都是一个标签。 表B =每4小时上传8个标题,因此,每天上传的总共(8 x 6)= 48个标题,每个标题平均有10个字。

我有一个PHP脚本,在每天结束时,取表A中的每个单词,查看是否在48个标题中的任何单词中找到它,如果找到它,那么它标记为用找到的单词标题。脚本在目前很有效。

所以基本上它正在做的是在48个标题中进行200次搜索,并且如果找到表a中的一个单词,则适当地标记每个标题。

现在,我已对网站进行了更改,并希望每4小时标记一次这些标题,而不是每天标记一次。因此,每次脚本标记时,它都需要仅标记8个新闻(而不是48个)并执行相同的200次搜索,但仅在8个标题中进行,而不是在48个标题中进行。它每天会做6次这样的操作。

更改脚本是否会显着提高效率,所以不是在8个标题中进行200次搜索(总共(8 x 10 = 80个单词),而是颠倒它的方式?这意味着,更改它反过来看,如果表A中的200个单词中有80个单词(存在于表B的8个标题中)?

有时会每2个小时收集一次标题(因此只会有4个标题),然后是1个(所以2个标题),所以要用脚本更新的“标题”数量会随着时间的推移而减少。 / p>

更改脚本的工作方式会更有效吗?改善是否足够相关?

我在想,如果要走这条路是可行的方法,最好的方法可能是两种方式,也就是首先看一下它要标记的标题数量和标签数量。如果需要标记超过X个标题,则使用脚本A(实际脚本),但如果需要标记小于X,则使用新脚本B.

我已经解释了这种简化和小规模。该脚本现在在200个不同的站点(未来还有更多站点)运行(每个站点有不同数量的标签和每小时标记的标题数量不同),并且可以很快完成更多,所以改进如何有效地处理脚本,可以大大提高网站的整体效率。

进行此更改是否有意义? 我是否可以做一个计算,看看这个变化何时有意义,或者如何计算我可能获得的效率可能提高

1 个答案:

答案 0 :(得分:0)

你的数字似乎足够低,任何工作方式对我来说都很快。要真正判断变更是否重要,你必须对事物进行基准测试,因为这方面的计算难以制定,因为它们依赖于很多因素。

那就是说,我相信从标题中取出并在标签表中搜索它应该比当前的实现更快。我的推理不是基于单词的数量,而是基于索引的使用:标签列表通常是非常静态的,并且在标签字上有一个索引,在那里你将寻找完全匹配, 对?另一方面,标题会经常更改,因此为其创建索引可能会降低性能。因为您将寻找子串匹配,所以正常(即非全文)索引将没有任何用处。

所以我要说确保标签列表有正确的索引。当新标题到达时,将它们分成PHP中的单词,然后将这些单词与索引一起插入临时MySQL表中。然后,您可以发出单个更新查询以添加所有标记,然后删除临时表。更新看起来像这样:

INSERT INTO post_tags (post_id, tag_id)
SELECT temp_words.post_id, tags.id
FROM temp_words INNER JOIN tags ON temp_words.word = tags.name

这假设您有一个表post_tags,其中每一行表示一个帖子上的一个标记,这是正确的数据库规范化所需的方式。 temp_tags是包含新处理标题字样的表格。