作为家庭作业,我已经获得了三个不同的reddit帖子的数据转换,我应该写一堆查询。数据转储的大小为12mb,1gb和2.5gb压缩。我开始使用最小的数据集并为它们编写查询,但是当我在较大的数据集上运行查询时,它们需要很多时间来执行。它们中的大多数都可以工作,但其中一个查询需要很长时间才能执行。
查询应该是获得帖子得分最多/最少的用户(用户总和得分)。
(SELECT `post_author` AS AUTHOR, SUM(`post_score`) AS SCORE FROM `post` GROUP BY `post_author` ORDER BY `SCORE` ASC LIMIT 1)
UNION
(SELECT `post_author` AS AUTHOR, SUM(`post_score`) AS SCORE FROM `post` GROUP BY `post_author` ORDER BY `SCORE` DESC LIMIT 1)
我使用EasyPHP来托管phpMyAdmin数据库。
现在我不确定这是一个记忆问题还是一个时间问题。我尝试过提升ExecTimeLimit'在phpMyAdmin配置中,但似乎没有什么区别。此外,我将非常感谢有关我可以调查以使查询更有效的任何提示。
创建SQL:
Create SQL: SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
CREATE TABLE IF NOT EXISTS `post` (
`post_id` bigint(11) NOT NULL,
`post_body` mediumtext NOT NULL,
`post_parent` int(11) NOT NULL,
`post_link` int(11) NOT NULL,
`post_created` date NOT NULL,
`post_author` varchar(50) NOT NULL,
`post_sub_id` int(11) NOT NULL,
`post_score` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;