Обсуждение: using indexes
Hello all, I have a table SP with a primary key SNO, I'm trying if v6.4beta2 uses indexes but seems it uses indexes only with '=' operator: prova=> explain select * from sp where sno = 'S1'; NOTICE: QUERY PLAN: Index Scan using sp_pkey on sp (cost=0.00 size=0 width=28) EXPLAIN prova=> explain select * from sp where sno = 'S1' or sno = 'S2'; NOTICE: QUERY PLAN: Seq Scan on sp (cost=0.00 size=0 width=28) EXPLAIN prova=> explain select * from sp where sno <> 'S1'; NOTICE: QUERY PLAN: Seq Scan on sp (cost=0.00 size=0 width=28) EXPLAIN prova=> explain select * from sp where sno > 'S1'; NOTICE: QUERY PLAN: Seq Scan on sp (cost=0.00 size=0 width=28) EXPLAIN prova=> explain select * from sp where sno < 'S1'; NOTICE: QUERY PLAN: Seq Scan on sp (cost=0.00 size=0 width=28) EXPLAIN Jose'
Sferacarta Software wrote: > > Hello all, > > I have a table SP with a primary key SNO, > I'm trying if v6.4beta2 uses indexes > but seems it uses indexes only with '=' operator: regression=> explain select unique1 from onek where unique1 < 3; NOTICE: QUERY PLAN: Index Scan using onek_unique1 on onek (cost=28.67 size=334 width=4) > prova=> explain select * from sp where sno = 'S1'; > NOTICE: QUERY PLAN: > Index Scan using sp_pkey on sp (cost=0.00 size=0 width=28) > EXPLAIN Looks like maybe you need to vacuum to get statistics for the optimizer? - Tom
Hi Tom, TGL> Jose' wrote: >> >> Hello all, >> >> I have a table SP with a primary key SNO, >> I'm trying if v6.4beta2 uses indexes >> but seems it uses indexes only with '=' operator: regression=>> explain select unique1 from onek where unique1 < 3; TGL> NOTICE: QUERY PLAN: TGL> Index Scan using onek_unique1 on onek (cost=28.67 size=334 width=4) >> prova=> explain select * from sp where sno = 'S1'; >> NOTICE: QUERY PLAN: >> Index Scan using sp_pkey on sp (cost=0.00 size=0 width=28) >> EXPLAIN TGL> Looks like maybe you need to vacuum to get statistics for the optimizer? TGL> - Tom After vacuum the behavior is the same: prova=> create table onek(unique1 int4 primary key); NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index onek_pkey for table onek CREATE prova=> insert into onek values (1); INSERT 152858 1 prova=> insert into onek values (10); INSERT 152859 1 prova=> explain select unique1 from onek where unique1 < 3; NOTICE: QUERY PLAN: Seq Scan on onek (cost=0.00 size=0 width=4) EXPLAIN prova=> vacuum; VACUUM prova=> explain select unique1 from onek where unique1 < 3; NOTICE: QUERY PLAN: Seq Scan on onek (cost=1.07 size=1 width=4) EXPLAIN PS: What about: select unique1 from onek where unique1 = 3 OR unique1 = 1; ^^ does it works on v6.4 ? Jose'
> PS: > What about: > select unique1 from onek where unique1 = 3 OR unique1 = 1; > ^^ > does it works on v6.4 ? It should. -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
Bruce Momjian wrote: > > > PS: > > What about: > > select unique1 from onek where unique1 = 3 OR unique1 = 1; > > ^^ > > does it works on v6.4 ? > > It should. This is a great new. This thing is absolutely neccessary to have better performances using ODBC and ACCESS. Thank you Jose'
On Mon, 19 Oct 1998, Sferacarta Software wrote: > Hi Tom, > > > TGL> Jose' wrote: > >> > >> Hello all, > >> > >> I have a table SP with a primary key SNO, > >> I'm trying if v6.4beta2 uses indexes > >> but seems it uses indexes only with '=' operator: > > regression=>> explain select unique1 from onek where unique1 < 3; > TGL> NOTICE: QUERY PLAN: > > TGL> Index Scan using onek_unique1 on onek (cost=28.67 size=334 width=4) > > >> prova=> explain select * from sp where sno = 'S1'; > >> NOTICE: QUERY PLAN: > >> Index Scan using sp_pkey on sp (cost=0.00 size=0 width=28) > >> EXPLAIN > > TGL> Looks like maybe you need to vacuum to get statistics for the optimizer? > > TGL> - Tom > > > After vacuum the behavior is the same: > > prova=> create table onek(unique1 int4 primary key); > NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index onek_pkey > for table onek > CREATE > prova=> insert into onek values (1); > INSERT 152858 1 > prova=> insert into onek values (10); > INSERT 152859 1 > prova=> explain select unique1 from onek where unique1 < 3; > NOTICE: QUERY PLAN: > > Seq Scan on onek (cost=0.00 size=0 width=4) The table has two records in it...why would it use an index? Marc G. Fournier scrappy@hub.org Systems Administrator @ hub.org scrappy@{postgresql|isc}.org ICQ#7615664
> Bruce Momjian wrote: > > > > > PS: > > > What about: > > > select unique1 from onek where unique1 = 3 OR unique1 = 1; > > > ^^ > > > does it works on v6.4 ? > > > > It should. > > This is a great new. > This thing is absolutely neccessary to have better performances using > ODBC and ACCESS. Yes. We worked hard on this because it was a much needed feature. -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026