delete_vectors
資料模型:
1、 規範化你的表
2、 使用核實的壓縮格式
表設計:
1、 使用分區
2、 定義主鍵外鍵
3、 預設的數字類型長度可能比實際需要的大。例如:numberc 該類型預設的長度是38位,如果實際的長度比這個小,那你建表的時候最好加上适合的長度。
4、 對于一個true/false值,boolean類型比char(1)類型和integer類型更快。
projections
1、 segmentation vs. replication (unsegmented)簡單的說,如果資料量大的話使用segmentation,小的話使用unsegmented
2、 使用order by ,理想的order by 的字段應該全部在where查詢字句中出現(詳見另一篇文章【】)
3、 列長度的規範,不要一味的定義大長度,在過濾條件和join時的字段如果是字元類型,最好使用int類型。
4、 group by:使用group by 時,一定要explain檢視執行計劃,如果執行計劃中使用的【group by hash】這時候就要修改你的查詢sql或者projection的,group by最好使用【group by pipeline】這種方式使用更少的記憶體,查詢更快!
5、 清楚不必要的projection,多餘的projection意味着查詢是要花費更多的時間去選擇。
6、 projection中的order 字段首先選用過濾的字段,然後選用join使用的列。
7、 確定projection資料均勻分布在各個節點上,以免查詢時産生資料傾斜。
查詢:
1、 避免使用in
2、 避免使用union
3、 select 時避免使用*,查詢時選擇合适的列
4、 使用with子句
5、 避免使用别名,例如 groupby 1,2,3
6、 在子查詢中使用orderby
7、 避免使用不等關系,例如:>=,not in 等
8、 對于複雜的sql,可以多使用臨時表
9、 delete_vectors中的資料盡量清除
資源(resources)
1、 profile,檢視查詢所需要的記憶體
2、 建立專用的資源池