読んだ本
2章 Naive Trees(素朴な木)
→深さに制限がない場合、ノードの数(スレッドのコメント数など)を数える場合など対応できない場合がある。
代替ツリーモデルを使用する
経路列挙
閉包テーブル
16章 Poor Man's Search Engine(貧者のサーチエンジン)
LIKE句を利用した中間一致検索
SELECT * FROM Bugs WHERE description LIKE '%crash%';
以下で中間・後方一致検索の性能を高められる。
基本的な解決策:ベンダー固有の全文検索エンジン
CREATE TABLE Bugs (
bug_id SERIAL PRIMARY KEY,
summary VARCHAR(80),
description TEXT,
ts_bugtext TSVECTOR
-- 他の列. . .
);
CREATE TRIGGER ts_bugtext BEFORE INSERT OR UPDATE ON Bugs
FOR EACH ROW EXECUTE PROCEDURE
tsvector_update_trigger(ts_bugtext, 'pg_catalog.english', summary, description);
GINインデックス
CREATE INDEX bugs_ts ON Bugs USING GIN(ts_bugtext);
SELECT * FROM Bugs WHERE ts_bugtext @@ to_tsquery('crash');