gpt4 book ai didi

iphone - JOIN 与子查询 - 性能 sqlite3

转载 作者:行者123 更新时间:2023-12-03 20:52:15 24 4
gpt4 key购买 nike

所以我有 3 张 table :

地点(LocationID [PK])

Track_Locations(TrackID [FK]、LocationID [FK])

轨道(TrackID [PK])

我正在为 iPhone 构建一个应用程序,有人告诉我,JOIN 可能比子查询运行得更快。这是真的?我已经四处搜索,但找不到直接答案,并且想知道在这种情况下最好使用什么。

我在这两种情况下的查询如下所示:

子查询:

SELECT LocationID, TimestampGPS, Longitude, Latitude, ... 
FROM locations
WHERE LocationID
IN (SELECT LocationID FROM track_locations WHERE TrackID = ?)

使用JOIN:

SELECT l.LocationID, l.TimestampGPS, l.Longitude, l.Latitude, ... 
FROM locations l
JOIN track_locations tl
ON (l.LocationID = tl.LocationID)
JOIN tracks t
ON (t.TrackID = tl.TrackID)
WHERE t.TrackID = ?

最佳答案

JOIN 几乎总是比子查询更快,因为它产生单个查询,而子查询是两个查询。然而,有些数据库知道如何将这种简单的子查询优化为 JOIN,尽管我怀疑 SQLite 是否会这样做。

也就是说,有时,考虑到数据的结构,执行子查询会更快。找出答案的唯一真正方法是使用来自野外的可能的样本数据集合加载数据库并对这两种方法进行基准测试。

不过,我怀疑这会是一场洗礼。大多数 iPhone 应用程序在数据库中没有足够的行来产生很大的差异。

关于iphone - JOIN 与子查询 - 性能 sqlite3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10829210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com