【发布时间】:2011-12-09 21:44:48
【问题描述】:
我的应用目前具有搜索书籍的搜索功能。注意:搜索操作一次只搜索一本书。
问题是随着下载书籍数量的增加,它变得非常缓慢。基本上,“pages”数据库表中有一个字段,其中包含书籍的文本内容。它被设置为索引。
这是我正在使用的查询:
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 会以任何方式提高查询速度吗?另外,我在这里只搜索一本书,但是如果表中还有属于其他书籍的页面,是否会影响速度?
或者,搜索这么多内容是否很耗时?
提前感谢您对此的任何想法。
--康纳
【问题讨论】:
-
A
LIKE '%?%'将需要搜索表中的每条记录,至少对每一行进行字符串比较和记录检索。除了这个条款,你能做的任何事情都会更好——FTS、自定义标记、..
标签: sql objective-c ios sqlite full-text-search