2013-05-10 149 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