自定义了一个电话查询的URI,利用raw_contacts,data,phone_lookup,这三个表把符合条件的数据查询出来。
刚开始我直接用sql1:
select * from raw_contacts inner join phone_lookup on ... inner join data on ...
在SqlSpy上查询7000笔只需要50毫秒,而在手机查询却需要将近20秒。
对比了一下data和phone_lookup的区别,直接raw_contacts inner join data.结果手机上查询只要不到1秒。本来想只用这两个表,不过考虑到电话号码中如果含有特殊符号的情况,于是继续思考。
反反复复看着raw_contacts inner join data,突然灵光一闪,把phone_lookup换个位置 sql2:
select * from raw_contacts inner join data on ... inner join phone_lookup on ...
这下结果也正确了,速度也非常快。真是很神奇。
但是更神奇的是:把sql1 union 另外一个查询,结果手机上速度也只要不到1秒的速度。
看来以后做些sqlite时,还是要多动动手,多尝试几种连接方式。