需要帮助/工具来比较SQL查询

时间:2012-04-18 18:17:05

标签: sql performance text compare

我有超过400万行的评论表:

CREATE TABLE `comments` 
(
     `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
     `gid` int(11) unsigned NOT NULL DEFAULT '0',
     `userid` int(6) unsigned DEFAULT NULL,
     `date` int(11) unsigned DEFAULT NULL,
     `comment` text NOT NULL,
     `status` enum('on','alert') NOT NULL DEFAULT 'on',
     PRIMARY KEY (`id`),
     KEY `gid_2` (`gid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

现在我正在考虑提取文本字段以减少400 MB并提高性能。像这样:

CREATE TABLE commentstext 
(
    id int(11) unsigned NOT NULL AUTO_INCREMENT,
    `comment` text NOT NULL,
    PRIMARY KEY (id)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

但我不确定这样做会不会更好。我需要使用不同的查询(也)来测试这种情况。到目前为止,我的结果差异很大。在0.001 * - 3.321秒之间。我无法通过查询phpmyadmin来检查这一点。

是否有更好,更简单的方法或工具来比较查询效果?

1 个答案:

答案 0 :(得分:0)

这就是我在寻找的东西:

SELECT BENCHMARK(1000000000, (
SELECT
comments.comment
FROM
comments
WHERE
`gid`=303410
LIMIT 1
));

(结果34.1612秒) (结果32.2737秒)

SELECT BENCHMARK(1000000000, (
SELECT
commentstext.comment
FROM
commentsindex,
commentstext
WHERE
`gid`=303410
AND commentsindex.`id` = commentstext.`id`
LIMIT 1
));

(结果34.1237秒) (结果34.2914秒)

SELECT BENCHMARK(1000000000, (
SELECT
commentstext.comment
FROM
commentsindex
INNER JOIN
commentstext
ON commentstext.`id` = commentsindex.`id`
WHERE
`gid`=303410
LIMIT 1
));

(结果32.8471秒) (结果34.7079秒)

...但现在我真的很想知道哪个桌面设计正在使用中并不重要。 混淆