糟糕的MySQL性能非常简单的选择

时间:2011-11-05 14:58:16

标签: mysql sql performance my.cnf

我的mysql查询性能有问题。我有一张很大的桌子

create table query(
    id  Integer,
    session Integer,
    time    Integer,
    name    Integer,
    region  Integer);

数据量 - 2 GB。我已经在“名称”上做了索引 - 7 gb。

我的查询如下:

select count(id) from query where name=somevalue;

我不会添加任何新数据,而且我使用标准的“my-huge.cnf”。不过,我每次查询花费大约4-5秒,我将做大约9-10 * 45000次查询。如果我的电脑有2GB内存,我应该改变哪些选项以提高速度。

2 个答案:

答案 0 :(得分:2)

计数(*)可能稍微快一点。

select count(*) as rowcount from query where name=somevalue;

您也可以考虑在单独的表中缓存计数并从中查询。

答案 1 :(得分:2)

如果您从未更改数据,则应考虑对所有可能的名称(SELECT DISTINCT(name) FROM query)运行一次查询,然后将COUNT()的值存储在缓存中。为此,您可以创建一个以cachename作为列的表total,并使用每个名称运行SELECT name, COUNT(*) AS total FROM query WHERE name = 'name'的结果填充该表。

然后您将只是SELECT total FROM cache WHERE name = 'name',这将非常快。

相关问题