User Tools

Site Tools


wiki:postgres:pg_tune_kurs_indices

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

wiki:postgres:pg_tune_kurs_indices [2017/09/28 12:21] (current)
Line 1: Line 1:
 +====== INDEX (INDICES) ======
 +
 +  * Woher kommen die Schätzwerte für EXPLAIN
 +
 +  test# \d pg_stats
 +
 +  test# SELECT null_frac FROM pg_stats WHERE tablename = '​t_test';​
 +  Gibt den Anteil der NULL Werte zurück.
 +
 +
 +  test# \x
 +  Expanded display is off.
 +  Query Plan dadurch meistens besser lesbar.
 +
 +  SET enable_sequscan TO off;
 +  Sequenziellen Scan ausschalten.
 +
 +===== Partielle Indices =====
 +
 +  test# CREATE INDEX idx_name on t_test(name) where name not in ('​Hans',​ '​Paul'​);​
 +  Wenn sehr häufige Werte (in diesem Fall Namen) in der Tabelle so bringt ein Index darauf meist nicht viel.
 +
 +===== Funktionelle Indices =====
 +
 +  test# CREATE INDEX idx_f_name on lower(trim('​ Mayer ');
 +
 +  test# CREATE INDEX ... ON ST_Area(wkb_geometry) ...
 +  Funktioneller Index auf die Fläche und evtl. noch mit der Seehöhe kombinieren.
 +
 +===== Bitmap Scan =====
 +
 +  EXPLAIN SELECT * from t_test where id = 4 or id = 12;
 +  2 Indexscans
 +
 +===== Type Cast =====
 +
 +  ::
 +  SELECT '<​(1,​2),​3>'::​circle;​
 +
 +
 +===== Arten von Indices =====
 +
 +btree, gist, gin, (hash)\\
 +\\
 +btree: < > kleiner, größer, also Reihenfolge\\
 +gist: contains, also beinhalten; für Geometrie und Volltextsuche\\
 +
 +D.h. die Indices stellen Operatoren zur Verfügung (btree: größer, kleiner; gist: contains).
 +
 +===== Volltext Indizierung =====
 +
 +  test# SELECT to_tsvector('​german',​ 'das ist ein super kurs'​);​
 +  -----------------
 +  '​kur':​5 '​sup':​4
 +  ​
 +  german bedeutet mit deutschen Regeln definiert. Stopwörter (ein, ...) werden dabei nicht indiziert.
 +
 +  test# SELECT to_tsvector(...) @@ to_tsquery('​german',​ '​berlin'​);​
 +  ​
 +  test# CREATE INDEX idx_tti ON t_test using gist(to_tsvector('​german',​ name));
 +
 +  test# CREATE TEXT SEARCH PARSER name (....
 +  Hiermit kann man einen eigenen Parser schreiben (z.b. Tags weggeben etc.)
 +**Man könnte z.B. den Begriff "​Umweltverschmutzung"​ in einem Text Search Parser definieren und dann auf eine\\
 +Tabelle einen Volltext-Index erstellen.**\\
 +**Volltextsuche ist nicht an Text gebunden!**\\
 +
 +===== TRUNCATE vs. DELETE =====
 +
 +  * TRUNCATE löscht einfach den gesamten Tabelleninhalt aus den "​storage files"​.
 +  * DELETE ​  ​markiert Zeile für Zeile als gelöscht.
 +
 +
  
wiki/postgres/pg_tune_kurs_indices.txt · Last modified: 2017/09/28 12:21 (external edit)