sqlite不相邻的字段建立联合索引,where子句依据该联合索引查询时,联合索引会生效吗?
我最近的一个项目用到了sqlite数据库,平台是mips+linux,现在在进行数据库的查询优化,在网上看了些资料,总是感觉不明朗,现在在这里将我的问题和疑问总结一下,请各位大侠指点迷津啊,小弟在此先谢了!
1、sqlite数据库存储的字段内容大小对查询效率有没有影响?还是说要看情况而定(比如说是否担当查询条件)?
2、sqlite数据库中对不连续的字段建立联合索引,该联合索引在where子句中作为查询条件时是否完全生效?
(注:我没有使用or、between、like,只有 = 、>= 和<=)。例如:creat if not exists index_1 on table_1(username,time),其中username(类型varchar),time(integer)两个字段互不相邻,此时,select * from table_1 where username='Tom' and time>='a' and time<='b',此时username和time的联合索引是否完全生效?
3、在2的基础上,如果只以联合索引中的username为条件查询,例如select * from table_1 where username='Tom' ,此时,联合索引中的username索引是否生效?
4、在2的基础上,如果只以联合索引中的time为条件查询,例如select * from table_1 where time>='a' and time<='b',此时,联合索引中的time索引是否生效?
注:在网上查资料,有人说在3中,username索引可以生效,但4中的time不会生效,这是有关前导列的问题,求证!
5、在2的基础上,我又单独对time字段建立了独立索引,creat if not exists index_2 on table_1(time),这样有没有什么问题?如果没有问题,那么请问一下,在username和time作为条件联合查询时,索引是怎么走的呢?并且和分别对username和time建立独立索引相比,效率如何?
6、关于数据库的分页查询:假如有一张表有100000条记录,select * from table limit 前10条和后10条效率相差甚远,求解释和解决方法,并且请问一下,此时是不是不可避免的全表查询,没有索引可走?有没有办法优化?
7、最后,我的项目平台是mips+linux,mips的cpu是384M的,数据库存储在U盘(读写速度较慢)里,请问一下,数据库的一张表里面存储了100000条数据,在6的基础上查询后10条大概要花多长时间(经验值)?