多个查询或其他数组处理?

时间:2011-05-13 16:14:21

标签: php mysql performance

我有一张看起来像这样的表:

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处理结果,然后遍历每个类别并显示其值。

哪种更有效还是有其他方法可以做到这一点吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

在大多数情况下,你想要做后者。多次访问数据库会消耗大量额外的网络带宽,无论如何你最终都会在PHP端循环。

这类似于N+1查询问题,您可以在StackOverflow或其他地方了解更多信息。

例如: What is SELECT N+1?

答案 1 :(得分:0)

你的情况非常普遍,人们在这种情况下使用单一查询,因为他们希望减少与数据库的对话并且只在一次需要所有数据时才获取所有数据,在你的情况下是真的。

使用单一查询。