私のアプリは現在、書籍を検索する検索機能を備えています。注:検索操作は、一度に1つのブックのみを検索します。iOS SQLite検索。スピードの問題
問題は、ダウンロードした書籍の数が増えるにつれて非常に遅くなることです。基本的に、書籍のテキストコンテンツを含むフィールドが「ページ」dbテーブルにあります。インデックスとして設定されます。
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はどのようにしてもクエリの速度を向上させるでしょうか?また、私はここで一つの本を検索しているだけですが、テーブルに他の書籍に属するページもあるとスピードに影響しますか?
または、この量のコンテンツを検索するのは時間がかかりますか?
ありがとうございました。
--Conor
'LIKE '%?%''は、テーブル内のすべてのレコードを検索する必要があります。少なくとも各行の文字列比較とレコード検索が必要です。この句以外にできることは、FTS、カスタムタギング、などです。 –