云數據庫GaussDB 查詢表
· SELECT語句中禁用慎用通配符字段“*”。
使用通配符字段查詢表時,如果因業(yè)務或數據庫升級導致表結構發(fā)生變化,可能出現與業(yè)務語句不兼容的情況。 因此業(yè)務應指明所需查詢的表字段名稱,避免使用通配符。
· 帶有LIMIT的查詢語句中必須帶有ORDER BY保證有序。
說明:GaussDB是一種分布式數據庫,表數據將分布在多個DN上。
如果SQL語句中只帶有LIMIT,而不帶有ORDER BY子句,數據庫將會把網絡傳輸較快的DN所發(fā)送的(符合查詢要求的)結果作為最終結果輸出到客戶端。
由于網絡傳輸效率不同時刻可能發(fā)生改變,因此導致多次執(zhí)行該SQL語句時,返回結果表現出不一致的情況。
· 避免對大字段(如VARCHAR(2000))執(zhí)行ORDER BY、DISTINCT、GROUP BY、UNION等會引起排序的操作。
此類操作將消耗大量的CPU和內存資源,執(zhí)行效率低下。
· 禁止使用慎用LOCK TABLE語句加鎖,僅允許應考慮使用 SELECT .. FOR UPDATE語句。
LOCK TABLE提供多種鎖級別,但如果對數據庫原理和業(yè)務理解不足,誤用表鎖可能觸發(fā)死鎖,導致集群不可用。
· 避免在SELECT目標列中使用子查詢,可能導致計劃無法下推到DN執(zhí)行,影響執(zhí)行性能。
· 考慮使用UNION ALL,少使用UNION,注意考慮去重。
UNION ALL不去重,少了排序操作,速度相對UNION更快。
如果沒有去重的需求,優(yōu)先使用UNION ALL。
· 需要統(tǒng)計表中所有記錄數時,不要使用count(col)來替代count(*)。count(*)會統(tǒng)計NULL值(真實行數),而count(col)不會統(tǒng)計。
· 在執(zhí)行count(col)時,將“值為NULL”的記錄行計數為0。在執(zhí)行sum(col)時,當所有記錄都為NULL時,最終將返回NULL;當不全為NULL時,“值為NULL”的記錄行將被計數為0。
· count(多個字段)時,多個字段名必須用圓括號括起來。例如,count( (col1,col2,col3) )。注意:通過多字段統(tǒng)計行數時,即使所選字段都為NULL,該行也被計數,效果與count(*)一致。
· count(distinct col)用來計算該列不重復的非NULL的數量, NULL將不被計數。
· count(distinct (col1,col2,...))用來統(tǒng)計多列的唯一值數量,當所有統(tǒng)計字段都為NULL時,也會被計數,同時這些記錄被認為是相同的。
· 使用連接操作符“ ||”替換concat函數進行字符串連接。因為concat函數生成的執(zhí)行計劃不能下推,導致查詢性能嚴重劣化。
· 當in(val1, val2, val3…)表達式中字段較多時,建議使用in (values(va11), (val2),(val3)…)語句進行替換。優(yōu)化器會自動把in約束轉換為非關聯子查詢,從而提升查詢性能。
· 避免頻繁使用下使用count()獲取大表行數,該操作資源消耗較大,影響并行作業(yè)執(zhí)行效率。
如果不需要實時的行數統(tǒng)計信息,可以嘗試使用如下語句來獲取表行數。
SELECT reltules FROM pg_class WHERE relname = 'tablename';
須知:
pg_class中所記錄的表行數信息只會在對該表執(zhí)行ANALYZE以后才會更新。
目前ANALYZE有兩種觸發(fā)條件:
1)業(yè)務主動發(fā)送ANALYZE語句,例如:
--分析連接庫中所有表
ANALYZE;
--分析指定表
ANALYZE tablename;
2)助AUTO VACCUUM機制,在每間隔一定時間或表的增刪達到一定行數時觸發(fā)。間隔時間和增刪比例可通過GUC參數設置。
云數據庫GaussDB優(yōu)勢
GaussDB數據庫具有高性能、高可用、高安全、低成本的特點
云數據庫GaussDB優(yōu)勢
GaussDB數據庫具有高性能、高可用、高安全、低成本的特點
優(yōu)勢詳情
-
1
高安全
GaussDB擁有TOP級的商業(yè)數據庫安全特性:數據動態(tài)脫敏,TDE透明加密,行級訪問控制,密態(tài)計算。
能夠滿足政企&金融級客戶的核心安全訴求。
-
2
健全的工具與服務化能力
GaussDB已經擁有華為云,商用服務化部署能力,同時支持DAS、UGO、DRS等生態(tài)工具。
有效保障用戶開發(fā)、運維、優(yōu)化、監(jiān)控、遷移等日常工作需要。
-
3
全棧自研
GaussDB基于鯤鵬生態(tài),是當前國內唯一能夠做到全棧自主可控的國產品牌。
同時GaussDB能夠基于硬件優(yōu)勢在底層不斷進行優(yōu)化,提升產品綜合性能。
-
4
開源生態(tài)
GaussDB已經支持開源社區(qū),并提供主備版版本下載。