日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

過濾條件不下推

本文介紹過濾條件不下推的使用場景與方法。

功能介紹

云原生數據倉庫AnalyticDB MySQL版在創建表時,默認為所有的字段創建了索引,使數據過濾的效率更高。然而在某些場景中,使用索引過濾數據不一定能得到較好的性能,甚至會影響整體性能。此時不建議繼續使用索引進行數據過濾。雖然用戶可以手動刪除某些字段的索引,但這種做法可能導致需要使用索引時卻沒有索引可用的問題。云原生數據倉庫AnalyticDB MySQL版過濾條件不下推功能,可以在查詢級別或實例級別暫時蔽掉某些字段的過濾條件下推能力,帶來更好整體查詢收益。

以下場景不建議使用索引過濾數據:

  • 數據唯一值少。數據唯一值較少,意味著數據經過過濾后返回的數據仍然很多,那么使用索引進行數據過濾的效果可能不一定好。

  • 磁盤IO壓力大。如果用戶業務的查詢特征是占用較多的IO資源,或者數據寫入較多導致占用了較多IO資源,那么使用索引進行數據過濾時,存在磁盤IO資源的爭搶,過濾效果也可能較差。

  • 同時有多個條件下推,且下推的條件中有LIKE、字符串比較等比較復雜的操作時,會對存儲節點相關資源消耗很大,影響整體的性能。

查看過濾條件是否下推

您可以通過執行頁面查看過濾條件是否下推。

  1. 在查詢的執行計劃頁簽,單擊包含TableScan算子的Stage。

    說明

    進入執行計劃頁簽的步驟,請參見查看診斷結果

  2. 單擊查看Stage計劃

  3. 在Stage計劃頁面,單擊TableScan算子。

  4. 在右側屬性中,查看是否顯示PushedDownFilter屬性。如果顯示,表示該過濾條件已下推;否則表示沒有下推的過濾條件。sql-exe-plan-attribute

    說明

    通過執行計劃,也可以確認過濾條件是否下推。

    • 彈性模式的集群,您可以查看下游Stage的執行計劃中是否顯示Filter算子。如果顯示則表示該算子相關的過濾條件沒有下推。

    • 預留模式的集群,您可以查看當前Stage計劃中是否顯示Filter算子。如果顯示則表示該算子相關的過濾條件沒有下推。

查詢級別關閉特定字段的過濾條件下推能力

針對某個查詢,使用Hint關閉某些字段的過濾條件下推。只對使用了Hint的查詢生效,其他查詢不受影響。

語法

  • 內核版本為3.1.4及以上,請使用下面的Hint:

    /*+ filter_not_pushdown_columns=[Schema1.table1:colName1|colName2;Schema2.table2:colName1|colName2] */
  • 內核版本為3.1.4以下,請使用下面的Hint:

    /*+ no_index_columns=[table1.colName1;colName2,table2.colName1] */
重要
  • 關閉特定字段的過濾條件下推能力既支持對同一個數據庫中的表使用Hint,也支持對不同數據庫中的表使用Hint。當3.1.4以下版本,跨庫使用Hint時,需要保證兩個庫中的表名不同,否則Hint可能會影響到不需要生效的表。3.1.4及以上版本的Hint通過Schema.table區分不同表,對不同庫中相同表名的表使用Hint時,不會影響查詢結果。

  • 查詢內核版本的方法,請參見如何查看實例版本信息。如需升級內核版本,請聯系技術支持。

示例

  • 示例1:

    以3.1.4及以上的內核版本為例,當前查詢,包含數據庫test01的表table01中字段idproduct的過濾條件不會下推。

    /*+ filter_not_pushdown_columns=[test01.table01:id|product] */
  • 示例2:

    以3.1.4及以上的內核版本為例,當前查詢,包含數據庫test01的表table01中字段idproduct,數據庫test02的表table03中字段key的過濾條件不會下推。

    /*+ filter_not_pushdown_columns=[test01.table01:id|product;test02.table03:key] */
  • 示例3:

    以3.1.4以下的內核版本為例,當前查詢,包含表table02中字段idproduct,表table03中字段key的過濾條件不會下推。

    /*+ no_index_columns=[table02.id;product,table03.key] */

集群級別關閉特定字段的過濾條件下推能力

您可以執行以下命令,對當前集群的所有查詢,關閉特定字段的過濾條件下推能力。

語法

  • 內核版本為3.1.4及以上版本,請使用下方語句:

    set adb_config filter_not_pushdown_columns=[Schema1.tableName1:colName1|colName2;Schema2.tableName2:colName1|colName2]
  • 內核版本為3.1.4以下,請使用下面的語句:

    set adb_config no_index_columns=[tableName1.colName1;colName2,tableName2.colName1]
重要
  • 關閉特定字段的過濾條件下推能力既支持對同一個數據庫中的表使用Hint,也支持對不同數據庫中的表使用Hint。當3.1.4以下版本,跨庫使用Hint時,需要保證兩個庫中的表名不同,否則Hint可能會影響到不需要生效的表。3.1.4及以上版本的Hint通過Schema.table區分不同表,對不同庫中相同表名的表使用Hint時,不會影響查詢結果。

  • 查詢內核版本的方法,請參見如何查看實例版本信息。如需升級內核版本,請聯系技術支持。

示例

以3.1.4及以上的內核版本為例,當前集群的所有查詢中,只要過濾條件包含數據庫test02的表table02中字段id,該過濾條件就不下推。

set adb_config filter_not_pushdown_columns=[test02.table02:id]