gpt4 book ai didi

android - SQLite 查询性能

转载 作者:行者123 更新时间:2023-11-30 02:01:58 26 4
gpt4 key购买 nike

我是 SQLite 的新手,我需要尽可能高效的查询。我有一个存储各种天文物体位置的数据库,我想通过我的 t REAL PRIMARY KEY 即时间访问它们的位置。我的查询是这样的

    SELECT * FROM positions ORDER BY ABS(t-t0) LIMIT 1;

其中 t0 是我想查看位置的时间。此查询使用主键,我认为这使其足够有效,但我不知道 ORDER BY ABS(...) 的数学运算是否会减慢搜索速度,尽管我怀疑这意味着全表扫描。

第一个问题:REAL PRIMARY KEY相对于普通的INTEGER PRIMARY KEY是效率问题吗?

第二个问题:如果我能从我的 android 应用程序代码中找到想要的主键 t0 并执行如下查询:

    SELECT * FROM positions WHERE t = t0;

我会提高效率吗?在这种情况下没有全表扫描,对吗?

最佳答案

INTEGER PRIMARY KEY 比其他类型稍微高效一些,但如果您的值不适合 INTEGER,您别无选择。

一般情况下,SQLite 不能使用索引来优化函数调用。

简单的查找确实会更有效,但可以重写原始查询以在访问表时仅使用基本比较:

SELECT *
FROM (SELECT *
FROM positions
WHERE t >= t0
ORDER BY t ASC
LIMIT 1)
UNION ALL
SELECT *
FROM (SELECT *
FROM positions
WHERE t < t0
ORDER BY t DESC
LIMIT 1)
ORDER BY ABS(t - t0)
LIMIT 1

最终的 ORDER BY 是在只有两行的临时结果上执行的。

关于android - SQLite 查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31317897/

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