2014-10-20 64 views
1

我需要在mysql中存儲一些常量以避免子查詢或查詢非常複雜。如何在mysql中存儲常量

我想知道哪種方法是最好的方法。

----------------------------------- 
ID  name    value 
----------------------------------- 
1  constant_name_1  100 
2  constant_name_2   0 
3  constant_name_3   12 
4  constant_name_4  257 
----------------------------------- 

我不確定上面寫的例子是否是最好的方法,因爲我對它有些疑惑。

1)我根本不需要ID字段。我只需要constant_name,所以我不知道它是否必要。 2)在大多數情況下,我需要一次知道幾個常量的值,而不只是一個。在這種情況下,我不知道我該如何處理這些查詢。

「SELECT value FROM constants_table WHERE name IN('constant_name1','constant_name2','constant_name3',...)」??

非常感謝

回答

2

你的做法是合理的。只要name將是唯一的,我會刪除ID列(不需要它),並使name列成爲您的PK。

至於查詢,我的選擇是根據需要使用子查詢一次選擇一個值。這是我能想到的最漂亮的方式,它可以優化:

SELECT myTable.ID, myTable.Name 
FROM myTable 
INNER JOIN (SELECT value FROM constants_table WHERE name = 'constant_name_1') C1 
    ON myTable.ThisValue = C1.value 
INNER JOIN (SELECT value FROM constants_table WHERE name = 'constant_name_4') C4 
    ON myTable.ThatValue = C4.value