gpt4 book ai didi

sql - iOS SQLite 搜索。速度问题

转载 作者:行者123 更新时间:2023-11-29 13:44:48 25 4
gpt4 key购买 nike

我的应用目前具有搜索书籍的搜索功能。注意:搜索操作一次只能搜索一本书。

问题是随着下载书籍数量的增加,它变得相当慢。基本上,“页面”数据库表中有一个字段包含本书的文本内容。它被设置为索引。

这是我正在使用的查询:

SELECT * FROM (
SELECT
page_num, content
FROM
offline_pages
JOIN offline_chapters ON offline_chapters.uid = offline_pages.offline_chapters_uid
JOIN offline_books ON offline_books.uid = offline_chapters.offline_books_uid
WHERE
offline_books_uid = ?
AND
content LIKE '%?%'
ORDER BY
page_num
) AS temp
ORDER BY temp.page_num
LIMIT 30

随着书籍数量的增加,用户仍在提示搜索功能。我知道这个查询非常繁重,但有什么方法可以改进它吗?

我之前一直在研究 SQLite 的 FTS 模块,以此来获得更好的结果等。FTS 会以任何方式提高查询速度吗?另外,我在这里只搜索一本书,但如果表中也有属于其他书的页面,会影响速度吗?

或者,搜索如此多的内容是否耗时只是个例?

在此先感谢您对此的任何想法。

--康纳

最佳答案

乍一看,尝试删除不必要的子查询和重复的“ORDER BY”语句。 “LIKE”语句也非常耗时(在许多情况下应尽可能避免,除非只处理一个小字符串);看看您是否可以更改该条件,以便它不必检查该文本字段中的每个字符序列。您还可以添加一些其他条件来减少 like 语句必须检查的数据子集。

另一种技术是对内容进行自己的索引。列上的数据库索引实际上只适用于精确匹配,不适用于字符序列搜索。因此,尝试在代码中通过解析添加到数据库中的内容来建立自己的索引,并使用这些常用词、短语或字符序列创建另一个表。

关于sql - iOS SQLite 搜索。速度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7804447/

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