どのように効率的なSELECTについての今日の話

ステージ上で共有する方法をインポートするインタラクティブなデータ分析のテーブルに、PostgreSQLの標準挿入文、素晴らしい景色ポータルへ:テーブルにデータを書き込む方法については、今日の話  の建設関連の操作は、テーブルに見ることができる一方で、期間:効率的なテーブルを作成する方法についての今日の話

一般的には、データストレージは、ストレージリソースをとり、とき調査データは、すばやく目的の結果を見つけるために、不要なコンピューティングリソースを排除することができますどのように、コンピューティングリソースを消費するだけでなく、挑戦のパフォーマンスの最適化されます。今日の小さな我々は目的の対話的な、効率的な使用中の分子はデータだけでなく、資源保存]を選択し、クエリの高速を達成する方法を説明しますと。

文法

SELECT [ALL | DISTINCT [ON (expression [, ...])]]
  * | expression [[AS] output_name] [, ...]
  [FROM from_item [, ...]]
  [WHERE condition]
  [GROUP BY grouping_element [, ...]]
  [HAVING condition [, ...]]
  [{UNION | INTERSECT | EXCEPT} [ALL] select]
  [ORDER BY expression [ASC | DESC | USING operator] [, ...]]
  [LIMIT {count | ALL}]

使用例

1.SELECT *

直接は、例のように、SELECT文を使用して、テーブル全体を検索します:

select * from test;

選択*を使用する場合は、テーブル全体は、インデックスが、実際の業務を行います、データのテーブル全体がすべてのようにコンピューティングリソースの多くを無駄に、同じ時間を必要としませんテーブル全体が特に大きい場合、データの量が消費されますお問い合わせをする時間がたくさん。

FROM選択します

特定のフィールドへのクエリの多くは、一般的に推奨されている場合、テーブル全体を検索しますが、たとえば、あなたがしたい列をチェックしません。

select id,name from test;

3.GROUP BY

GROUP BYステートメントは、1つ以上の列に記載の重合性官能基と関連して結果セットを用いています。

SELECT kind, sum(length) AS total FROM films GROUP BY kind;

説明:フロート/このフロートを倍増しませ含むフィールドでグループ。

4.DISTINCT / COUNT DISTINCT

表においては、重複する値を含むことができる別個の戻り異なる値を使用するように、カウント数を算出するための別個の非重複データです。

//distinct用法
SELECT DISTINCT ON (location) location, time, report
    FROM weather_reports
    ORDER BY location, time DESC;
 
//精确uv
SELECT c1, COUNT(DISTINCT c2) FROM table GROUP BY c1

//非精确uv
SELECT c1, approx_count_distinct(c2) FROM table GROUP BY c1
    

5.UNION

UNION 2つの以上の計算結果については、SELECT文を組み合わせています。

注:各SELECTステートメントは、選択した列の数が同じ、列式と同じ数、同じタイプのデータ、そして、彼らは一貫して表示されるため、必ずしも必要ではないが、同じ長さでなければなりません。

 SELECT  ID, NAME, AMOUNT, DATE
         FROM CUSTOMERS
         LEFT JOIN ORDERS
         ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
    UNION
         SELECT  ID, NAME, AMOUNT, DATE
         FROM CUSTOMERS
         RIGHT JOIN ORDERS
         ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

BY 6.ORDER

ORDER BYはクエリの結果をソートするために使用されます。指定された列に応じて結果セットをソートするために使用することができます。

注:デフォルトのソートが使用する降順、昇順です、あなたはDESCキーワードを使用する必要があります

SELECT Company, OrderNumber FROM Orders ORDER BY Company;

//降序排列
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC;

7.WHERE

どこ指定した基準に従ってデータを選択するために使用します。

SELECT * FROM Persons WHERE FirstName='Bush';

最適化されました

1は、いくつかの列をチェックし指定されたフィールドを選択する選択テーブル全体を交換する必要があります

select * from table
替换成:
select id,name from table;

大規模なデータクエリ2.、いくつかのフィルタを追加し、定義された条件

select id,value from table where id=123 limit 1000;

データテーブルの大量、クエリについて3は、主にメインクエリシナリオと同等のクエリで、フィルタフィールドの効率を促進するためにCLUSTEREDフィールドを使用して、テーブルハッシュクラスタリングに元のテーブルを作成または変更することが推奨されます。

4.データの量が、長い時間が非常に大きいクエリの場合、あなたはデータスキューの問題かどうかを決定する必要がありますすることができEXPLAIN ANALYZE診断情報を取得するために実行計画の方法を表示します。

インタラクティブな分析プロセスの使用は、ご質問がある場合は、グループにご相談ください。
image.png

おすすめ

転載: yq.aliyun.com/articles/740810