2013-03-22 56 views
0

我有一个应用程序,它是基于竞争的,并且包括(可以说)10种类型的饼干(饼干)和6种饮料。我使用MODx Revolution 2.2作为CMS。从数据库收集统计

参赛者基本上指定他们喜欢哪种饮料并输入条形码(与饼干类型有关)。

我想把这个内容作为一个统计信息展示出来,但我想这是相当耗费资源的查询数据库的每个COUNT()

$biscuit1 = $modx->query("SELECT COUNT(*) FROM my_table WHERE barcode = '1234'"); 
$biscuit1 = $modx->fetch(PDO::FETCH_ASSOC); 
$biscuit1 = $biscuit1[0]; 

所以我的问题是:

  • 做16个数据库查询(可能更多)是不好的做法?
  • 如果有更好的数据集收集统计方法,它是什么?

注:我有一个想法创建另一个统计表,我在一个小时的cron工作中运行这些查询。这会有帮助吗?

+0

'COUNT(*)'是不是所有的资源密集型的。如果条形码被索引,它也会有所帮助 – 2013-03-22 04:47:58

+0

对@HankyPanky索引有任何负面影响吗? – ahren 2013-03-22 04:49:39

+0

是的,超过索引然后使'INSERT'操作变慢。但是添加一个索引根本不会超过索引。在这种情况下,消极因素是微不足道的。索引按指数级加速查询 – 2013-03-22 04:50:50

回答

1

COUNT(*)并非所有的资源密集型。如果barcode被索引,它也会有所帮助。 您也可以抢在一个查询所有条码数据,而不是运行16个查询,为每个

$result = $modx->query("SELECT barcode,COUNT(*) FROM my_table GROUP by barcode");