It was pointed out to me that in fact, you can do better. If you already know that one of the components is given by
ideal j = z0, z1, z2, 4*z4^2+z6*z7-z3*z5;
you can saturate the ideal i w. r. t. j:
list s1 = sat(i, j);
This geometrically corresponds to the complement of V(j) in V(i) where V(i) is the variety defined by i. You can then decompose this, which gives you one component:
> list l1 = primdecGTZ(s1);
Then you do it the other way round:
> list s2 = sat(i, l1);
> list l2 = primdecGTZ(s2);
Finally, you can check that l1+l2 is indeed a primary decomposition of the ideal i:
> ideal t = intersect(l1, l2);
> size(reduce(t, std(i)));
> size(reduce(i, t));
which shows that the ideal t is indeed (mathematically) equal to i.
The desired result can thus be obtained in a few seconds cpu time.