小编ImN*_*oob的帖子

Postgresql查询优化不允许内部/外部联接

我得到了这个查询来优化POSTGRESQL 9.2:

SELECT C.name, COUNT(DISTINCT I.id) AS NumItems, COUNT(B.id)
FROM Categories C INNER JOIN Items I ON(C.id = I.category) 
                  INNER JOIN Bids B ON (I.id = B.item_id)
GROUP BY C.name
Run Code Online (Sandbox Code Playgroud)

作为我学校作业的一部分.

我在各自的表上创建了这些索引:items(category)- >第二个b +树,bids(item_id)- >第二个b +树,categories(id)- >主索引在这里,

奇怪的是,PostgreSQL正在对我的Items,Categories和Bids表进行顺序扫描,当我设置时enable_seqscan=off,索引搜索比下面的结果更可怕.

当我在PostgreSQL中运行解释时,这就是结果:请不要删除它们,因为它们是重要的!

GroupAggregate  (cost=119575.55..125576.11 rows=20 width=23) (actual time=6912.523..9459.431 rows=20 loops=1)
  Buffers: shared hit=30 read=12306, temp read=6600 written=6598
  ->  Sort  (cost=119575.55..121075.64 rows=600036 width=23) (actual time=6817.015..8031.285 rows=600036 loops=1)
        Sort Key: c.name
        Sort Method: external merge  Disk: 20160kB …
Run Code Online (Sandbox Code Playgroud)

database postgresql join query-optimization postgresql-performance

6
推荐指数
1
解决办法
1348
查看次数

c编程segfault unitialised int?

我有这个看起来像的程序.

int indexLength;
char *args[1024];
while(args[indexLength])
     indexLength++;
Run Code Online (Sandbox Code Playgroud)

如果我在计算机上运行程序,while循环行给了我一个段错误...而indexLength取一些荒谬的任意值.但是,如果我在家里的Linux机器上运行程序,没有段错误,我的程序正常运行.

我可以想到的两台机器之间的唯一区别是,工作中的那个有gcc4.7 redhat版本,并且正在运行Fedora OS,而我家的机器已经从ppa存储库下载了gcc4.7,并且正在运行ubuntu OS.但是,我不相信这是唯一的区别!它能是什么?

编辑:抱歉,我忘了提.如果我初始化indexLength = 0,则segfault在工作的计算机上消失了.

c gcc initialization segmentation-fault

1
推荐指数
1
解决办法
98
查看次数