我有一个数据库设计在这里,看起来这简化版本:PHP/MySQL:海量SQL查询或几个较小的查询?
表building
:
- ID
- ATTRIBUTE1
- attribute2
数据中有这样的:
- (1,1,1)
- (2,1,2)
- (3,5,4)
以及表,attribute1_values
和attribute2_values
,构成为:
- ID
- 值
其中包含了类似的信息:
- (1, “选项1的文字说明”)
- (2, “选项2的文字描述”)
- ...
- (6, “选项6的文字描述” )
我不确定这是否是最好的设置,但它是按照我的项目经理的要求完成的。它肯定有一些事实,因为你可以很容易地修改文本,而不会搞乱编号。
但是现在我已经到了一个页面,我需要列出这些属性,那么我该怎么去呢?我看到两个主要选项:
1)制作一个大查询,收集所有building
的值,同时从attribute{x}_values
表中选取正确的文本表示。
2)创建一个小型查询,收集表building
中的所有值。然后,每次获取每个属性的文本表示。
什么是最好的选择?选项1的选择更快吗?如果是这样,是否值得维护方面的额外麻烦?
一个单一的数据库查询通常要远小于多个查询效率更高,应该是更少的代码以及 –
@MarkBaker可以有多达20个虽然属性...任何理由有不同的意见呢? – skiwi
属性越多,使用单个查询而不是20个单独查询的理由越多 - 执行查询的时间成本要比循环遍历结果集的时间成本高很多,因此每个返回1个结果的20个查询几乎不可避免地比1个查询返回20个结果慢很多 –