Hi Nathan
I just found a strange case , can you give me some explaination ?
I have a Table with about 800,000 record
DB Version : 3. 2. 7
The Sql looks like
select x, y, sum(z)/1000 as bw from aa where
a=1 and b=1 and
c =1 and d= 6 group by x, y having count(*) > 1 order by bw
desc
limit 10
Column "d" is all set to 6
1/3 of total record is (a=1,b=1,c=1)
1/3 of total record is (a=2,b=2,c=2)
1/3 of total record is (a=3,b=3,c=3)
I just test the above Sql under different index (each time, I just create one
index and drop another)
1) create index 1 on aa (d)
2) create index 2 on aa (a,b,c,d)
Expect :
I think Using second index should be much faster than using first index.
Actually
That two index almost give the same performance. both of them will take
about 15 seconds
Why? thanks in advice :)
Nathan Kurz <[EMAIL PROTECTED]> 写道: On Mon, Dec 12, 2005 at 09:48:21AM +0800,
Bo Lin wrote:
> Here is a sql string ,like : select * from test where (a=0 or a=1)
> and b=1 ; and column a range from 1-10000, and column b range from
> 0-1. and DB has about 300,000 record with colum a and b configured
> randomly .
>
> Two index is create on "test" table . First is on "column b" and the
> second is on "a,b"
>
> but when I try to use "explain" , I found the first index is
> used. but obviousely if sqlite can use the second index , the
> performance can be improved a lot .
>
> how can I use the second index, can sqlite can support "select" to
> specify certain index ?
I'm sorry I can't just offer you the correct answer, but have you
looked at ? It gives some good
hints on how to the choice of indices is made.
Good luck,
--nate
__________________________________________________
赶快注册雅虎超大容量免费邮箱?
http://cn.mail.yahoo.com