Tom Lane wrote:

"Wang Mike" <[EMAIL PROTECTED]> writes:


but this query: select * from test_uuid where id = 'df2b10aa-a31d-11d7-9867-0050babb6029'::uuid dosn't use index





QUERY PLAN
---------------------------------------------------------------
Seq Scan on test_uuid (cost=0.00..22.50 rows=500 width=140)
Filter: (id = 'df2b10aa-a31d-11d7-9867-0050babb6029'::uuid)





why ??



The rows estimate looks pretty fishy --- I think you are getting the 0.5 default selectivity estimate for an operator that has no restriction estimator. Most likely you should have created the operator using eqsel and eqjoinsel as the restriction/join estimators.

regards, tom lane



Hi, Tom,

I'm trying to test it, but don't know if I understood you correctly,
you mean we should try to create the operator using eqsel/eqjoinsel estimators, right?
But after we added those estimators like this:


CREATE OPERATOR = (
   LEFTARG = uuid,
   RIGHTARG = uuid,
   COMMUTATOR = =,
   NEGATOR = <>,
   PROCEDURE = uuid_eq,
   RESTRICT = eqsel,
   JOIN = eqjoinsel
);

the situation trun worse: now the explain shows the query using the index,
the we can't select out the match row! Any hint about what's wrong with us?



Thanks and Reagards


Laser



---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to