我最近编写了一个调查应用程序,它完成了它的工作并收集了所有数据。现在我必须分析数据,我遇到了一些时间问题。我必须找出有多少人选择了哪个选项并将其全部显示出来。
我正在使用这个查询,它确实可以完成它的工作:
SELECT COUNT(*)
FROM survey
WHERE users = ? AND table = ? AND col = ? AND row = ? AND selected = ?
GROUP BY users,table,col,row,selected
正如“?”所表明的那样 我正在使用 MySQLi(在 php 中)在需要时获取数据,但我担心这会导致它变得如此缓慢。
该表由上述所有元素(+ 唯一 ID)组成,它们都是整数。解释一些字段:每个调查分为 3 或 4 个表格(大小从 2x3 到 5x5),以 1 到 10 的幸福等级来选择表格。(问题在表格的右侧和顶部,然后您回答问题相交的地方)
用户 - 年龄组
table, row, col - 上面解释过
选择 - 上面解释过
现在,随着调查的完成和表中大约 100 万个条目,查询变得非常缓慢。有时需要 3 分钟,有时(我猜)时间限制到期,你根本没有得到任何数据。我也无法访问完整的数据库,只是我的空“测试”数据库,因为客户有点偏执:S(他的服务器似乎有点慢)
现在(在最初的文章之后)我的问题是:我故意将索引排除在外,因为在调查期间写入了大量数据,这将是一个坏主意。但是由于此时没有新数据进入,索引表的所有字段是否有意义?索引从不超过 10 的整数有多大意义?(你可以猜到我对索引一无所知)。我需要此表中的主要唯一 ID 吗?我
我在某处读到索引可能有助于分组,但前提是您按表中的第一列分组(并且由于我的 ID 是第一位的,从我的角度来看没用,我可以删除它并从中获得任何东西吗?)
有没有另一种方法来编写我的查询,它基本上会做同样的事情,但在更短的时间内?
提前感谢您的所有建议!