我正在开发一款应用程序,它可以获取原始公交数据并显示即将到来的列车时刻表。我使用以下查询来检索工作站列表(从包含大约50,000个停止时间条目的表中):
SELECT DISTINCT SUBSTR(stops._id, 0, LENGTH(stops._id)) as _id, stops.stop_name
FROM trips, stop_times, stops
WHERE trips._id = 'B'
AND trips.trip_id = stop_times._id
AND stop_times.stop_id = stops._id
我在SQLite浏览器中运行此查询,并在大约0.8秒内执行。但是当我使用rawQuery()在DatabaseHelper类中执行它时,我的物理设备上需要超过5分钟。我添加了一些日志记录语句来查看减速发生的位置,看起来这是查询本身需要很长时间,而不是View的膨胀。当我在没有DISTINCT选项的情况下执行相同的查询时,它会在大约1秒内执行。
我可以理解Android库的执行时间比浏览器要长一些,但速度应该不会慢几百倍。是否有关于DISTINCT选项导致此问题的内容?
答案 0 :(得分:0)
DISTINCT
需要时间来处理,因为它是排序和选择的问题。如果你有大量数据,DISTINCT只会让它变得更糟。我建议你将查询细分为较小的部分和/或以实际方式进行过滤