91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行ClickHouse性能提升中的SQL使用

發布時間:2022-01-06 16:17:19 來源:億速云 閱讀:154 作者:柒染 欄目:大數據

今天就跟大家聊聊有關如何進行ClickHouse性能提升中的SQL使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1. 不要用select *

反例:


select * from app.user_model

正例:


select login_id,name,sex from app.user_model
理由:    只查詢需要的字段可以減少磁盤io和網絡io,提升查詢性能

2.不要在大結果集上構造虛擬列

反例:


select id ,pv, uv , pv/uv rate from app.scene_model

正例:


select id ,pv, uv from app.scene_model
理由:    虛擬列非常消耗資源浪費性能,拿到pv uv后在前端顯示時構造比率。

3. 不要在唯一列或大基數列上進行分組或去重操作

反例:


select id, count(1) cn from app.user_model group by id

正例:


select id  from app.user_model
理由:    基數太大會消耗過多的io和內存。

4. 根據需要查詢指定范圍的數據 (where)

反例:


select login_id,name,sex from app.user_model

正例:


select login_id,name,sex from app.user_model where create_time>'2020-03-30'
理由:    減少磁盤io和網絡io,提升查詢性能

5. 關聯查詢時小表在后(大表 join 小表)

反例:


select login_id,name,sex,a.scene_name from app.scene_model a join app.user_model b on a.create_user=b.id

正例:


select login_id,name,sex,a.scene_name from app.user_model  a join app.scene_model  b on a.id=b.create_user
理由:

    無論是Left Join 、Right Join還是Inner Join永遠都是拿著右表中的每一條記錄到左表中查找該記錄是否存在。

6. 使用 uniqCombined 替代 distinct

反例:


SELECT count( DISTINCT create_user ) from  app.scene_model

正例:


SELECT uniqCombined( create_user ) from  app.scene_model
理由:    uniqCombined對去重進行了優化,通過近似去重提升十倍查詢性能

7. 通過使用 limit 限制返回數據條數

反例:


select id,scene_name,code,pv from app.scene_model order by pv desc

正例:


select id,scene_name,code,pv from app.scene_model order by pv desc limit 100
理由:

    使用limit返回指定的結果集數量,不會進行向下掃描,大大提升了查詢效率。

8. 盡量不去使用字符串類型

反例:

CREATE TABLE scene_model(    id String,    scene_name String,    pv String,    create_time String)ENGINE = <Engine>...

正例:

CREATE TABLE scene_model(    id String,    scene_name String,    pv Int32,    create_time Date)ENGINE = <Engine>...
理由:    時間類型最終會轉換成數值類型進行處理,數值類型在執行效率和存儲上遠好過字符串。

9. 指定查詢分區獲取必要的數據

假設分區字段是day
反例:


select type,count(1) from app.user_model group by type

正例:


select type,count(1) from app.user_model where day ='2020-03-30' group by type
理由:    通過指定分區字段會減少底層數據庫掃描的文件數量,提升查詢性能

10.分組前過濾不必要的字段

反例:


select type,count(1) from app.user_model group by type

正例:


select type,count(1) from app.user_model where type ='1' or  type ='2' group by type
理由:    通過限制分組前結果集數量,查詢性能一般能提示數十倍,甚至上百倍

看完上述內容,你們對如何進行ClickHouse性能提升中的SQL使用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新泰市| 杭锦旗| 满城县| 辽阳县| 泸定县| 呈贡县| 东城区| 南投县| 二手房| 武清区| 日喀则市| 大姚县| 河北区| 江安县| 五指山市| 邢台市| 和政县| 临桂县| 蚌埠市| 交口县| 苍梧县| 靖宇县| 修武县| 万荣县| 漯河市| 蓬安县| 台中市| 邳州市| 乐安县| 永州市| 九寨沟县| 泾川县| 广宗县| 高雄市| 家居| 卓尼县| 芦山县| 桂平市| 平远县| 武穴市| 阿荣旗|