Re: 7.1.3 not using index - Mailing list pgsql-hackers
| From | Daniel Kalchev |
|---|---|
| Subject | Re: 7.1.3 not using index |
| Date | |
| Msg-id | 200112032057.WAA23586@dcave.digsys.bg Whole thread Raw |
| In response to | Re: 7.1.3 not using index (Tom Lane <tgl@sss.pgh.pa.us>) |
| Responses |
Re: 7.1.3 not using index
|
| List | pgsql-hackers |
>>>Tom Lane said:> Daniel Kalchev <daniel@digsys.bg> writes:> > Here is another table:> > > CREATE TABLE "persons" (> >
"personid" integer DEFAULT nextval('personid_seq'::text),> > "name" text,> > "title" text,> >
[...]>> );> > > CREATE INDEX "persons_personid_idx" on "persons" using btree ( "personid" > > "int4_ops" );> > >
(partof the statistics for this row)> > attname | attdispersion | starelid | staattnum | staop | stanullfrac |
>> stacommonfrac | stacommonval | staloval | > > stahival> > personid |
4.1328e-05| 19795 | 1 | 97 | 0 | > > 0.000206469 | 2089 | 1
| 12857> > > now, EXPLAIN again gives me:> > > db=# explain select * from persons where personid = 1;> >
NOTICE: QUERY PLAN:> > > Seq Scan on persons (cost=0.00..490.62 rows=1 width=177)> > That does seem pretty broken; the
thingis well aware that the query is> selective (note the rows estimate), so why is it not using the index?> > Do you
getthe same plan if you try to force an indexscan by doing> set enable_seqscan to off;
Here is what it gives:
db=# set enable_seqscan to off;
SET VARIABLE
db=# explain select * from persons where personid = 1;
NOTICE: QUERY PLAN:
Index Scan using persons_personid_idx on persons (cost=0.00..nan rows=1
width=177)
> > Also, I'd like to see the EXPLAIN VERBOSE result not just EXPLAIN.
Here it is (after turning enable_seqscan back on)
db=# explain verbose select * from persons where personid = 1;
NOTICE: QUERY DUMP:
{ SEQSCAN :startup_cost 0.00 :total_cost 490.62 :rows 1 :width 177
:qptargetlist ({ TARGETENTRY :resdom { RESDOM :resno 1 :restype 23 :restypmod
-1 :resname personid :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false }
:expr { VAR :varno 1 :varattno 1 :vartype 23 :vartypmod -1 :varlevelsup 0
:varnoold 1 :varoattno 1}} { TARGETENTRY :resdom { RESDOM :resno 2 :restype 25
:restypmod -1 :resname name :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk
false } :expr { VAR :varno 1 :varattno 2 :vartype 25 :vartypmod -1
:varlevelsup 0 :varnoold 1 :varoattno 2}} { TARGETENTRY :resdom { RESDOM
:resno 3 :restype 25 :restypmod -1 :resname title :reskey 0 :reskeyop 0
:ressortgroupref 0 :resjunk false } :expr { VAR :varno 1 :varattno 3 :vartype
25 :vartypmod -1 :varlevelsup 0 :varnoold 1 :varoattno 3}} { TARGETENTRY
:resdom { RESDOM :resno 4 :restype 25 :restypmod -1 :resname occupation
:reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { VAR :varno 1
:varattno 4 :vartype 25 :vartypmod -1 :varlevelsup 0 :varnoold 1 :varoattno
4}} { TARGETENTRY :resdom { RESDOM :resno 5 :restype 23 :restypmod -1 :resname
person_type :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr {
VAR :varno 1 :varattno 5 :vartype 23 :vartypmod -1 :varlevelsup 0 :varnoold 1
:varoattno 5}} { TARGETENTRY :resdom { RESDOM :resno 6 :restype 25 :restypmod
-1 :resname street :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false }
:expr { VAR :varno 1 :varattno 6 :vartype 25 :vartypmod -1 :varlevelsup 0
:varnoold 1 :varoattno 6}} { TARGETENTRY :resdom { RESDOM :resno 7 :restype 25
:restypmod -1 :resname town :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk
false } :expr { VAR :varno 1 :varattno 7 :vartype 25 :vartypmod -1
:varlevelsup 0 :varnoold 1 :varoattno 7}} { TARGETENTRY :resdom { RESDOM
:resno 8 :restype 25 :restypmod -1 :resname zipcode :reskey 0 :reskeyop 0
:ressortgroupref 0 :resjunk false } :expr { VAR :varno 1 :varattno 8 :vartype
25 :vartypmod -1 :varlevelsup 0 :varnoold 1 :varoattno 8}} { TARGETENTRY
:resdom { RESDOM :resno 9 :restype 25 :restypmod -1 :resname phone :reskey 0
:reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { VAR :varno 1 :varattno
9 :vartype 25 :vartypmod -1 :varlevelsup 0 :varnoold 1 :varoattno 9}} {
TARGETENTRY :resdom { RESDOM :resno 10 :restype 25 :restypmod -1 :resname fax
:reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { VAR :varno 1
:varattno 10 :vartype 25 :vartypmod -1 :varlevelsup 0 :varnoold 1 :varoattno
10}} { TARGETENTRY :resdom { RESDOM :resno 11 :restype 25 :restypmod -1
:resname email :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr
{ VAR :varno 1 :varattno 11 :vartype 25 :vartypmod -1 :varlevelsup 0
:varnoold 1 :varoattno 11}} { TARGETENTRY :resdom { RESDOM :resno 12 :restype
16 :restypmod -1 :resname archived :reskey 0 :reskeyop 0 :ressortgroupref 0
:resjunk false } :expr { VAR :varno 1 :varattno 12 :vartype 16 :vartypmod -1
:varlevelsup 0 :varnoold 1 :varoattno 12}} { TARGETENTRY :resdom { RESDOM
:resno 13 :restype 1043 :restypmod 20 :resname archived_by :reskey 0 :reskeyop
0 :ressortgroupref 0 :resjunk false } :expr { VAR :varno 1 :varattno 13
:vartype 1043 :vartypmod 20 :varlevelsup 0 :varnoold 1 :varoattno 13}} {
TARGETENTRY :resdom { RESDOM :resno 14 :restype 1184 :restypmod -1 :resname
archived_at :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr {
VAR :varno 1 :varattno 14 :vartype 1184 :vartypmod -1 :varlevelsup 0
:varnoold 1 :varoattno 14}} { TARGETENTRY :resdom { RESDOM :resno 15 :restype
1184 :restypmod -1 :resname created_at :reskey 0 :reskeyop 0 :ressortgroupref
0 :resjunk false } :expr { VAR :varno 1 :varattno 15 :vartype 1184 :vartypmod
-1 :varlevelsup 0 :varnoold 1 :varoattno 15}} { TARGETENTRY :resdom { RESDOM
:resno 16 :restype 1043 :restypmod 20 :resname created_by :reskey 0 :reskeyop
0 :ressortgroupref 0 :resjunk false } :expr { VAR :varno 1 :varattno 16
:vartype 1043 :vartypmod 20 :varlevelsup 0 :varnoold 1 :varoattno 16}} {
TARGETENTRY :resdom { RESDOM :resno 17 :restype 1184 :restypmod -1 :resname
updated_at :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr {
VAR :varno 1 :varattno 17 :vartype 1184 :vartypmod -1 :varlevelsup 0
:varnoold 1 :varoattno 17}} { TARGETENTRY :resdom { RESDOM :resno 18 :restype
1043 :restypmod 20 :resname updated_by :reskey 0 :reskeyop 0 :ressortgroupref
0 :resjunk false } :expr { VAR :varno 1 :varattno 18 :vartype 1043 :vartypmod
20 :varlevelsup 0 :varnoold 1 :varoattno 18}}) :qpqual ({ EXPR :typeOid 16
:opType op :oper { OPER :opno 96 :opid 65 :opresulttype 16 } :args ({ VAR
:varno 1 :varattno 1 :vartype 23 :vartypmod -1 :varlevelsup 0 :varnoold 1
:varoattno 1} { CONST :consttype 23 :constlen 4 :constbyval true :constisnull
false :constvalue 4 [ 1 0 0 0 ] })}) :lefttree <> :righttree <> :extprm ()
:locprm () :initplan <> :nprm 0 :scanrelid 1 }
NOTICE: QUERY PLAN:
Seq Scan on persons (cost=0.00..490.62 rows=1 width=177)
> One thing that should be eliminated at the outset is the possibility of> a bad build of Postgres. How did you
configureand build, *exactly*?> Did you make any midcourse corrections (like building some of the files> with different
compilerswitches than others)?
I will rebuild it again, re-initdb and reload the whole database, but this
build was on vanilla BSD/OS 4.2 with the only modifications to add larger
shared memory support in the kernel (I need to run many backends). My current
favorite (which I copy from server to server :) is
# support for larger processes and number of childs
options "DFLDSIZ=\(128*1024*1024\)"
options "MAXDSIZ=\(256*1024*1024\)"
options "CHILD_MAX=256"
options "OPEN_MAX=256"
options "KMAPENTRIES=4000" # Prevents kmem malloc errors !
options "KMEMSIZE=\(32*1024*1024\)"
options "SHMMAXPGS=32768"
options "SHMMNI=400"
options "SHMSEG=204"
# More semaphores for Postgres
options "SEMMNS=600"
PostgreSQL was build with these options
./configure --enable-locale --with-perl --with-pythos --with-tcl
--enable-obdc --with-krb4 --with-openssl --enable-syslog
--with-includes=/usr/include/kerberosIV:/usr/contrib/include
I have the habbit to always clean before every build.
What I will do try to do now is to clean/rebuild/install everything again.
Then try to build with --enable-locale only. Then try to build without any
options at all..
Hope you find some useful information to track this down.
Daniel
pgsql-hackers by date: