2

我有一张只有一行的桌子。

这张表被经常查询。(在每个页面加载)。

构建查询的最佳方法是什么?

让我们假设,这是一个表结构:

CREATE TABLE `counter` (
    `id` INT(10) NOT NULL DEFAULT '0',
    `point1` INT(10) NOT NULL DEFAULT '0',
    `point2` INT(10) NOT NULL DEFAULT '0',
    `point3` INT(10) NOT NULL DEFAULT '0',
    `...` INT(10) NOT NULL DEFAULT '0',
    `pointN` INT(10) NOT NULL DEFAULT '0'
)

id故意添加了字段。表引擎是MyISAM.

现在我正在这样做:

SELECT * FROM counter WHERE id = 1 LIMIT 1;

我可以这样做吗:

SELECT * FROM counter;

或者这样:

SELECT * FROM counter LIMIT 1;

性能会有差异吗?

id字段未编入索引。如果只有一行,我看不到索引中的要点。

4

3 回答 3

1

优化器可能会将所有查询优化为相同。但理论上

SELECT * FROM counter;

是最快的,因为它不需要对数据进行任何查找,因为没有where限制数据的子句。

于 2013-05-10T20:09:03.807 回答
1

如果您经常使用该行,请不要每次都触发查询,只需触发一次并在本地存储值。

一次选择所有值

SELECT * FROM counter;

此查询将是最快的,因为没有条件检查限制和位置。

于 2013-05-10T20:09:33.873 回答
1

SELECT * FROM counter;

这是最快的,但是对于这种类型的表,性能充其量可以忽略不计。

于 2013-05-10T20:11:29.693 回答