• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何为 iOS 加速或优化这个 SQLite 查询?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 19:13:17 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个非常简单的数据库结构。我在一个表中有 12 列,大多数是 varchar(<50),大约有 8500 行。

当我在 iPhone 4 上执行以下查询时,平均需要 2.5-3 秒才能得到结果:

SELECT * FROM names ORDER BY name COLLATE NOCASE ASC LIMIT 20

似乎这种事情不应该这么慢。有趣的是,在第 2 代 iPod 上运行的同一个应用程序的相同查询要快约 1.5 秒。那部分超出了我的范围。

我还有其他有相同问题的查询: SELECT * FROM names WHERE SEX = ?1 AND ORIGIN = ?2 ORDER BY name COLLATE NOCASE ASC LIMIT 20

SELECT * FROM names WHERE name LIKE ?3 AND SEX = ?1 AND ORIGIN = ?2 ORDER BY name COLLATE NOCASE ASC LIMIT 20

等等

我在 SQLite db 上添加了一个索引:CREATE INDEX names_idx ON names (name, origin, sex, meaning) where name, originsexmeaning 是我倾向于使用 WHERELIKE 运算符查询的列。

对提高这些搜索的性能有什么想法吗?或者这是否是原子性的?



Best Answer-推荐答案


索引 CREATE INDEX names_idx ON names (name, origin, sex, meaning) 我相信,只有在您的查询包含所有这些列时才会使用。如果在查询中只使用了一些,则不能使用索引。

继续您的第一个查询:SELECT * FROM names ORDER BY name COLLATE NOCASE ASC LIMIT 20 - 我建议单独在名称上添加索引,即 CREATE INDEX names_idx1 ON名称(名称)。从理论上讲,这应该会加快查询速度。

如果您想要其他索引与其他常见查询的组合列,这很公平,它可能会提高查询速度,但请记住它会增加您的数据库大小。

关于ios - 如何为 iOS 加速或优化这个 SQLite 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119835/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap