我有一个包含 3 列的表:submission_id、column_id、data。每个submission_id 有25 列和数据值。
我有一个页面显示 column_id = 16 和 data = ('' or 0) 的所有提交。为此,我使用子查询来获取我需要的所有不同的submission_id,然后获取主查询中的所有列。我的查询是:
SELECT sid,cid,data FROM webform_submitted_data WHERE sid in(select distinct sid from webform_submitted_data where cid=16 and data in (' ',0)) ORDER BY sid ASC
表越来越大,从 PHP 运行查询现在需要 30-40 秒(虽然从 MYSQL 只需要 1.0e-6 秒)这不是 PHP 开销,我使用 mysqld-slow.log 文件检查,我得到如下: <-- # Query_time: 32.975552 Lock_time: 0.000138 Rows_sent: 108 Rows_examined: 177396 -->
我还尝试在 PHP 中运行解释![解释]:( http://i.imgur.com/692eyHf.png )
还有一件事,这个页面更新了当前提交,并在 column_id 16 中放置了一个 ID 值,当它重新加载时,它会从页面中删除。没有更新的重新加载需要不到一秒的时间,但是当我们需要更新 100 条记录时,它每次都会重建缓存。
任何想法将不胜感激。