如果這個問題提出不當,請提前道歉。我不是資料庫管理員,對這一切有點菜鳥。
我有一個運行非常緩慢的谷歌云 Postgres 13 資料庫。底層硬體應該足以滿足我們的要求。我已執行以下查詢以嘗試了解可能發生的情況。
SELECT relname, seq_scan, seq_tup_read, idx_scan, idx_tup_fetch, seq_tup_read / seq_scan
FROM pg_stat_user_tables
WHERE seq_scan > 0
ORDER BY seq_tup_read DESC;
我承認不了解輸出(對我來說有些閱讀)但是這個問題非常關鍵,因為我們的生產資料庫上發生了所以想要找到一個解決方案,然后花時間去理解它。
查詢顯示以下輸出(在 pgadmin 中運行)

這顯然表明我的sessions桌子上可能缺少索引。我的表有 300k 行和以下列結構

您可以看到我們使用uuid( CREATE EXTENSION IF NOT EXISTS "uuid-ossp";) 作為主鍵。
我目前有以下索引
select tablename,indexname,tablespace,indexdef from pg_indexes where tablename = 'sessions';

除了唯一的主鍵之外,我還需要主鍵上的索引嗎?更一般地說,我怎樣才能知道我需要創建的索引?
提前致謝!
uj5u.com熱心網友回復:
除了唯一的主鍵之外,我還需要主鍵上的索引嗎?
唯一索引是一個索引,它根本不允許重復值。但它仍然具有索引的屬性,可以讓資料庫快速找到一個值或一個值范圍。
主鍵始終為您創建唯一鍵(也是一個NOT NULL約束)。
如果沒有有關您要優化的查詢的更多資訊,很難就創建索引的列給出建議。
uj5u.com熱心網友回復:
您選擇了一個不好的示例,因為這是一個系統視圖,您無法為其創建索引。
通常,您用于EXPLAIN確定查詢的執行方式并根據該資訊設計索引。
uj5u.com熱心網友回復:
當您在 GCP 云 SQL 上使用 PostgreSQL 13 時,您可以啟用 EverSQL 進行快速性能分析并找到:缺失索引、冗余索引、最慢查詢以及這些查詢的最重要的自動重寫。
這是有關如何在 GCP Cloud SQL 上啟用它的快速教程。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/432701.html
標籤:sql PostgreSQL 表现 索引 谷歌云 sql
下一篇:犰狳:.t()的低效鏈接
