Android SQLite 性能:单个查询中的多个选择与多个查询中的单个选择?
Posted
技术标签:
【中文标题】Android SQLite 性能:单个查询中的多个选择与多个查询中的单个选择?【英文标题】:Android SQLite Performance: Multiple selects in single query Vs single select in multiple queries? 【发布时间】:2016-11-09 13:08:33 【问题描述】:性能方面,哪个更好(对于单个表)?:
-
单个查询中的多选或
在多个查询中单选?
例子:
/*table schema*/
create table ACTIVITY_TABLE (
ID integer primary key autoincrement,
INTERVAL_ID integer not null,
ACTIVITY_TYPE text ,
WIFI_LIST text,
COUNT integer not null );
/*Multipe selects in single query*/
select * from
(select sum(COUNT)/60 as Physical from ACTIVITY_TABLE where INTERVAL_ID >=1 and INTERVAL_ID <=3 and (ACTIVITY_TYPE="Still" or ACTIVITY_TYPE = "Walking" or ACTIVITY_TYPE = "Running" ) ),
(select sum(COUNT)/60 as vehicular from ACTIVITY_TABLE where INTERVAL_ID >=1 and INTERVAL_ID <=3 and (ACTIVITY_TYPE="InVehicle" ) );
【问题讨论】:
【参考方案1】:对于您的示例,您可以通过以下方式修改查询,这将更有效,我没有测试查询。
select
sum(case when activitytype='walking' or activitytype='still' or activitytype='running' then COUNT else 0 end )/60 as physical,
sum(case when activitytype='InVehicle' then COUNT else 0 end)/60 as vehicular
from
activity_table
where interval_id>=1 and interval_id<=3
【讨论】:
感谢@Mohanraja,但您的查询没有给我预期的结果 @ctu 我想我错过了 COUNT & (/60) 部分,我将编辑该部分,现在试试吧 现在查询给出了预期的结果。有一个脚本或代码来检查两个查询的性能会很好。我会做一些谷歌搜索,也许我可以找到一些 sqlite 查询性能测试器,因为现在两个查询(你的和我的)都在 1 毫秒内返回结果,因此我真的不能确定哪个更好。不过感谢您的意见:)以上是关于Android SQLite 性能:单个查询中的多个选择与多个查询中的单个选择?的主要内容,如果未能解决你的问题,请参考以下文章