2009-05-18 28 views
1

我有一个页面可以根据类别ID从多个类别中拉出许多标题。更快在MYSQL中查询或使用PHP逻辑

我想知道是否更有意义的是拉出所有的标题,然后通过PHP将它们排序,如果/ ifelse语句或更好地运行多个查询,每个查询包含每个类别的标题。

+0

什么是您的类别ID的来源?你有分类表吗?你是否获得所有类别和标题,或者只有选定的类别? – CoderDennis 2009-05-18 16:55:20

+0

我还没有决定是否我只是每个标题行都有一个类别字段,或者将它分割为自己的表格。 – Tim 2009-05-18 17:16:43

回答

8

为什么不在一个查询中做到这一点?类似于:

SELECT headline FROM headlines WHERE category_id IN (1, 2, 3, ...); 

如果您使用PHP过滤标题,请考虑您将丢弃多少标题。如果最终只取消10%的头条新闻,那么不会像当你扔掉90%的结果时那么重要。

0

通常最好不要超载数据库,因为如果您有很多同时查询,则可能会造成瓶颈。

但是,在PHP中处理您的处理通常是,因为Apache会根据需要处理多个请求来分叉线程。

像往常一样,这一切归结为:“有多少流量?

0

MySQL已经可以为你选择和排序数据了。我建议懒惰,并使用它。

另外,我会寻找(1)查询,一次提取所有类别和标题。 ORDER BY类别,发布日期或其他?

0

每次去数据库都会花费你一些东西。返回额外的数据,然后你决定忽略花费你的东西。所以你几乎肯定会更好地让数据库进行修剪。

我敢肯定,有人可能会想出一些决定需要哪些数据会使查询非常复杂,因此数据库难以优化的情况,而您可以轻松地在代码中执行该操作。但是如果我们谈论的是“从类别='体育'的故事中选择标题,然后选择”从类别='政治'的故事中选择标题“,然后”从类别='健康'的故事中选择标题“等等, (“健康”,“体育”,“政治”)的类别中的标题,后者显然更好。

2

这类问题总是很难回答,因为情况决定了最佳的课程。从来没有一个真正正确的答案,只有更好的方法。根据我的经验,尝试使用PHP或数据库进行工作并不重要,因为您应该总是尝试使用缓存引擎(如memcached)缓存任何昂贵操作的结果。这样你就不会花费很多时间在数据库或php本身,因为结果将被缓存并准备好即时使用。当涉及到它时,如果你使用类似xDebug这样的工具来分析你的应用程序,你认为你的性能瓶颈只是猜测。