2013-05-10 63 views
2

我有一张只有一行的表格。MySQL从一行中选择表格

该表经常被查询。 (每页加载)。

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

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

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字段未被编入索引。如果只有一行,我没有看到索引中的点。

回答

1

优化器可能会优化所有查询。但理论上

SELECT * FROM counter; 

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

+0

那么'id'字段是多余的? – rinchik 2013-05-10 20:10:51

+0

如果你不需要这个领域,它是无用的。 – 2013-05-10 20:11:55

1

如果您正在使用该行,通常不会在每次只触发一次查询时触发查询,并将值存储在本地。

一次

SELECT * FROM counter; 

选择所有值这个查询将是最快的,因为没有条件检查像极限在哪里。

+0

此表正在更新多次每秒 – rinchik 2013-05-10 20:10:21

+0

@rinchik你正在使用哪种语言应用监听器或数据库触发器所以它会通知你.. – 2013-05-10 20:11:57

+0

我使用PHP() – rinchik 2013-05-10 20:13:11

1

SELECT * FROM counter;

这是最快的,但是这种类型的表的性能可以忽略不计的最好的。

+0

你会建议什么类型的表格? – rinchik 2013-05-10 20:17:01

+0

你现在正在做的是最好的方法,另一个应用程序将使用数组,但使用表更加可扩展,并且更易于使用。 – NinjaTurtles 2013-05-10 20:30:35