我有一个表,看起来有点像这样:多个查询或额外的数组处理?
CREATE TABLE foobar
(
id INT(6) NOT NULL AUTO_INCREMENT,
category ENUM('Cat1','Cat2','Cat3','Cat4') NOT NULL,
name VARCHAR(255) NOT NULL,
PRIMARY KEY(id),
);
我有一个页面,所有这些数据将显示如下:
<h3>Cat1</h3>
<ul>
<li>Value1</li>
<li>Value2</li>
</ul>
<h3>Cat2</h3>
<ul>
<li>Value1</li>
<li>Value2</li>
</ul>
...
我的问题是它的效率更高,使每个类别的一个查询将结果集限制为一个类别... SELECT name FROM foobar WHERE category = cat1;
或者我是否应该获取整个表SELECT category, name FROM foobar;
,然后使用PHP处理结果,然后遍历每个类别并显示其值。
哪个更有效率还是有另一种方法来做到这一点?
谢谢!
它通常*更有效地运行更少的查询,但是您应该测试两种方法并查看哪种方法更好。如果你只是简单地倾销整个表格,最有可能的是单个查询会更好。 – 2011-05-13 16:16:14
你可以发布'SELECT类别,COUNT(类别)从foobar GROUP BY类别'的输出,并指出该数字(和分布)是否可能会改变? – 2011-05-13 16:19:52
@ james-c现在在该特定表中少于100个项目。分布约为。 25/25/20/30。不过,这份名单将在未来增长。 – NightHawk 2011-05-13 16:25:55