我需要在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值FROM constants_table WHERE name IN(' constant_name1',' constant_name2',' constant_name3',...)" ??
非常感谢
答案 0 :(得分: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