Php 在mysql中存储搜索查询

Php 在mysql中存储搜索查询,php,mysql,database,search,Php,Mysql,Database,Search,我有一个相当大的网站,每天大约有10万次搜索 我的mysql目前在服务器上造成了很高的负载,我怀疑是我的表存储了搜索查询 现在mysql表只有两列:date和query。每次有人搜索某个内容时,我都会添加新的查询,然后另一个脚本会删除超过24小时的查询。网站上显示了最近30个查询,按日期排序 这可能是高负荷的原因吗?添加ID为的列或使用任何其他方法存储搜索是否会有很大的不同?thx我建议查看索引,并可能添加一些专门的搜索工具,如Sphinx 我建议您首先对搜索查询运行EXPLAINquery 如

我有一个相当大的网站,每天大约有10万次搜索

我的mysql目前在服务器上造成了很高的负载,我怀疑是我的表存储了搜索查询

现在mysql表只有两列:date和query。每次有人搜索某个内容时,我都会添加新的查询,然后另一个脚本会删除超过24小时的查询。网站上显示了最近30个查询,按日期排序


这可能是高负荷的原因吗?添加ID为的列或使用任何其他方法存储搜索是否会有很大的不同?thx

我建议查看索引,并可能添加一些专门的搜索工具,如Sphinx

我建议您首先对搜索查询运行
EXPLAIN
query


如果您的表有很多写操作,则不应该使用MyISAM引擎,因为它锁定所有表,而不仅仅是行。您可能应该使用InnoDB引擎。

让我们看看。。。计算搜索表上的行数。也就是说,我认为您需要存储日期、查询和结果,以避免启动过多的查询。在日期列上有索引吗?另外,使用
EXPLAIN
获取一些基本的探查器信息。这是一个相当广泛的问题。对于您的数据库如此高的负载,可能有许多不同的原因。您确定这是您的瓶颈吗?插入和存储它们不会导致性能问题,只会占用大量空间,但是重复查询任何特定的内容会导致速度减慢。解释结果:我切换到InnoDB,让我们看看它是否改变了什么。看起来切换到InnoDB实际上帮助很大!负载从10-30下降到2-6@user1394013您能显示查询吗?从解释中可以看到没有使用索引,但是如果没有查询,很难判断应该添加哪些索引。