[ { "Name": "TestOptimizerDebugTrace", "Cases": [ [ { "Received Command": { "Command": "Execute", "ExecuteStmtInfo": { "BinaryParamsInfo": [ { "Type": "bigint(20) BINARY", "Value": "127" } ], "PreparedSQL": "select sum(col1) from t where col1 < ? and col1 > 100", "UseCursor": false }, "ExecutedASTText": "select sum(col1) from t where col1 < ? and col1 > 100" } }, { "github.com/pingcap/tidb/pkg/planner.Optimize": [ { "Parameter datums for EXECUTE": [ "KindInt64 127" ] }, { "github.com/pingcap/tidb/pkg/planner.Optimize": [ { "Enable binding": true, "IsStmtNode": true, "Matched": false, "Matched bindings": null, "Scope": "", "Used binding": false }, { "github.com/pingcap/tidb/pkg/planner.optimize": { "github.com/pingcap/tidb/pkg/planner/core.DoOptimize": [ { "github.com/pingcap/tidb/pkg/planner/core.logicalOptimize": null }, { "github.com/pingcap/tidb/pkg/planner/core.physicalOptimize": [ { "github.com/pingcap/tidb/pkg/planner/core.getStatsTable": { "CountIsZero": false, "HandleIsNil": false, "InputPhysicalID": 100, "Outdated": false, "StatsTblInfo": { "Columns": [ { "CMSketchInfo": null, "Correlation": 0, "HistogramSize": 0, "ID": 1, "LastUpdateVersion": 440930000000000000, "LoadingStatus": "unInitialized", "NDV": 0, "Name": "col1", "NullCount": 0, "StatsVer": 0, "TopNSize": -1, "TotColSize": 0 } ], "Count": 10000, "Indexes": [ { "CMSketchInfo": null, "Correlation": 0, "HistogramSize": 0, "ID": 1, "LastUpdateVersion": 440930000000000000, "LoadingStatus": "unInitialized", "NDV": 0, "Name": "i", "NullCount": 0, "StatsVer": 0, "TopNSize": -1, "TotColSize": 0 } ], "ModifyCount": 0, "PhysicalID": 100, "Version": 440930000000000000 }, "TableName": "t", "TblInfoID": 100, "Uninitialized": true, "UsePartitionStats": false } }, { "github.com/pingcap/tidb/pkg/planner/core.deriveStats4DataSource": [ { "github.com/pingcap/tidb/pkg/planner/core.fillIndexPath": { "github.com/pingcap/tidb/pkg/planner/cardinality.GetRowCountByIndexRanges": [ { "ID": 1, "Ranges": [ "(100,127)" ] }, { "github.com/pingcap/tidb/pkg/statistics.IndexStatsIsInvalid": { "CollPseudo": true, "IsInvalid": true, "TotalCount": 0 } }, { "Name": "i", "Result": 250 } ] } }, { "github.com/pingcap/tidb/pkg/planner/core.deriveStatsByFilter": { "github.com/pingcap/tidb/pkg/planner/cardinality.Selectivity": [ { "Input Expressions": [ "lt(test.t.col1, 127)", "gt(test.t.col1, 100)" ] }, { "github.com/pingcap/tidb/pkg/planner/cardinality.GetRowCountByColumnRanges": [ { "ID": 1, "Ranges": [ "(100,127)" ] }, { "github.com/pingcap/tidb/pkg/statistics.ColumnStatsIsInvalid": { "EssentialLoaded": false, "InValidForCollPseudo": true, "IsInvalid": true, "NDV": 0, "TotalCount": 0 } }, { "Name": "col1", "Result": 250 } ] }, { "github.com/pingcap/tidb/pkg/planner/cardinality.GetRowCountByIndexRanges": [ { "ID": 1, "Ranges": [ "(100,127)" ] }, { "github.com/pingcap/tidb/pkg/statistics.IndexStatsIsInvalid": { "CollPseudo": true, "IsInvalid": true, "TotalCount": 0 } }, { "Name": "i", "Result": 250 } ] }, { "Expressions": [ "lt(test.t.col1, 127)", "gt(test.t.col1, 100)" ], "Selectivity": 0.025, "partial cover": false }, { "Result": 0.025 } ] } }, { "github.com/pingcap/tidb/pkg/planner/core.derivePathStatsAndTryHeuristics": [ { "github.com/pingcap/tidb/pkg/planner/core.deriveTablePathStats": null }, { "github.com/pingcap/tidb/pkg/planner/core.deriveIndexPathStats": null } ] }, { "github.com/pingcap/tidb/pkg/planner/core.generateIndexMergePath": null }, { "Access paths": [ { "AccessConditions": [], "CountAfterAccess": 10000, "CountAfterIndex": 0, "IndexFilters": [], "TableFilters": [ "lt(test.t.col1, 127)", "gt(test.t.col1, 100)" ] }, { "AccessConditions": [ "lt(test.t.col1, 127)", "gt(test.t.col1, 100)" ], "CountAfterAccess": 250, "CountAfterIndex": 250, "IndexFilters": [], "IndexName": "i", "TableFilters": [] } ] } ] } ] } ] } } ] } ] } ], null, [ { "Received Command": { "Command": "Query", "ExecuteStmtInfo": null, "ExecutedASTText": "select * from t where col1 = 100" } }, { "github.com/pingcap/tidb/pkg/planner.Optimize": [ { "Enable binding": true, "IsStmtNode": true, "Matched": true, "Matched bindings": [ { "BindSQL": "SELECT * FROM `test`.`t` USE INDEX () WHERE `col1` = 100", "Charset": "utf8mb4", "Collation": "utf8mb4_bin", "CreateTime": 0, "Db": "test", "OriginalSQL": "select * from `test` . `t` where `col1` = ?", "PlanDigest": "", "SQLDigest": "36ceb6159adb3ac83539ec90c861ac4be4bc5cdb5fa02f70542744a4af640eac", "Source": "manual", "Status": "enabled", "UpdateTime": 0 } ], "Scope": "session", "Used binding": true }, { "Trying Hint": "use index ()" }, { "github.com/pingcap/tidb/pkg/planner.optimize": { "github.com/pingcap/tidb/pkg/planner/core.DoOptimize": [ { "github.com/pingcap/tidb/pkg/planner/core.logicalOptimize": null }, { "github.com/pingcap/tidb/pkg/planner/core.physicalOptimize": [ { "github.com/pingcap/tidb/pkg/planner/core.getStatsTable": { "CountIsZero": false, "HandleIsNil": false, "InputPhysicalID": 100, "Outdated": false, "StatsTblInfo": { "Columns": [ { "CMSketchInfo": null, "Correlation": 0, "HistogramSize": 0, "ID": 1, "LastUpdateVersion": 440930000000000000, "LoadingStatus": "unInitialized", "NDV": 0, "Name": "col1", "NullCount": 0, "StatsVer": 0, "TopNSize": -1, "TotColSize": 0 } ], "Count": 10000, "Indexes": [ { "CMSketchInfo": null, "Correlation": 0, "HistogramSize": 0, "ID": 1, "LastUpdateVersion": 440930000000000000, "LoadingStatus": "unInitialized", "NDV": 0, "Name": "i", "NullCount": 0, "StatsVer": 0, "TopNSize": -1, "TotColSize": 0 } ], "ModifyCount": 0, "PhysicalID": 100, "Version": 440930000000000000 }, "TableName": "t", "TblInfoID": 100, "Uninitialized": true, "UsePartitionStats": false } }, { "github.com/pingcap/tidb/pkg/planner/core.deriveStats4DataSource": [ { "github.com/pingcap/tidb/pkg/planner/core.deriveStatsByFilter": { "github.com/pingcap/tidb/pkg/planner/cardinality.Selectivity": [ { "Input Expressions": [ "eq(test.t.col1, 100)" ] }, { "github.com/pingcap/tidb/pkg/planner/cardinality.GetRowCountByColumnRanges": [ { "ID": 1, "Ranges": [ "[100,100]" ] }, { "github.com/pingcap/tidb/pkg/statistics.ColumnStatsIsInvalid": { "EssentialLoaded": false, "InValidForCollPseudo": true, "IsInvalid": true, "NDV": 0, "TotalCount": 0 } }, { "Name": "col1", "Result": 10 } ] }, { "github.com/pingcap/tidb/pkg/planner/cardinality.GetRowCountByIndexRanges": [ { "ID": 1, "Ranges": [ "[100,100]" ] }, { "github.com/pingcap/tidb/pkg/statistics.IndexStatsIsInvalid": { "CollPseudo": true, "IsInvalid": true, "TotalCount": 0 } }, { "Name": "i", "Result": 10 } ] }, { "Expressions": [ "eq(test.t.col1, 100)" ], "Selectivity": 0.001, "partial cover": false }, { "Result": 0.001 } ] } }, { "github.com/pingcap/tidb/pkg/planner/core.derivePathStatsAndTryHeuristics": { "github.com/pingcap/tidb/pkg/planner/core.deriveTablePathStats": null } }, { "github.com/pingcap/tidb/pkg/planner/core.generateIndexMergePath": null }, { "Access paths": [ { "AccessConditions": [], "CountAfterAccess": 10000, "CountAfterIndex": 0, "IndexFilters": [], "TableFilters": [ "eq(test.t.col1, 100)" ] } ] } ] } ] } ] } }, { "Best Hint": "use index ()" } ] } ], [ { "Received Command": { "Command": "Query", "ExecuteStmtInfo": { "BinaryParamsInfo": null, "PreparedSQL": "select * from t where col1 in (?, 2, 3)", "UseCursor": false }, "ExecutedASTText": "execute stmt using @a" } }, { "github.com/pingcap/tidb/pkg/planner.Optimize": [ { "Parameter datums for EXECUTE": [ "KindInt64 1" ] }, { "github.com/pingcap/tidb/pkg/planner.Optimize": [ { "Enable binding": true, "IsStmtNode": true, "Matched": false, "Matched bindings": null, "Scope": "", "Used binding": false }, { "github.com/pingcap/tidb/pkg/planner.optimize": { "github.com/pingcap/tidb/pkg/planner/core.DoOptimize": [ { "github.com/pingcap/tidb/pkg/planner/core.logicalOptimize": null }, { "github.com/pingcap/tidb/pkg/planner/core.physicalOptimize": [ { "github.com/pingcap/tidb/pkg/planner/core.getStatsTable": { "CountIsZero": false, "HandleIsNil": false, "InputPhysicalID": 100, "Outdated": false, "StatsTblInfo": { "Columns": [ { "CMSketchInfo": null, "Correlation": 0, "HistogramSize": 0, "ID": 1, "LastUpdateVersion": 440930000000000000, "LoadingStatus": "unInitialized", "NDV": 0, "Name": "col1", "NullCount": 0, "StatsVer": 0, "TopNSize": -1, "TotColSize": 0 } ], "Count": 10000, "Indexes": [ { "CMSketchInfo": null, "Correlation": 0, "HistogramSize": 0, "ID": 1, "LastUpdateVersion": 440930000000000000, "LoadingStatus": "unInitialized", "NDV": 0, "Name": "i", "NullCount": 0, "StatsVer": 0, "TopNSize": -1, "TotColSize": 0 } ], "ModifyCount": 0, "PhysicalID": 100, "Version": 440930000000000000 }, "TableName": "t", "TblInfoID": 100, "Uninitialized": true, "UsePartitionStats": false } }, { "github.com/pingcap/tidb/pkg/planner/core.deriveStats4DataSource": [ { "github.com/pingcap/tidb/pkg/planner/core.fillIndexPath": { "github.com/pingcap/tidb/pkg/planner/cardinality.GetRowCountByIndexRanges": [ { "ID": 1, "Ranges": [ "[1,1]", "[2,2]", "[3,3]" ] }, { "github.com/pingcap/tidb/pkg/statistics.IndexStatsIsInvalid": { "CollPseudo": true, "IsInvalid": true, "TotalCount": 0 } }, { "Name": "i", "Result": 30 } ] } }, { "github.com/pingcap/tidb/pkg/planner/core.deriveStatsByFilter": { "github.com/pingcap/tidb/pkg/planner/cardinality.Selectivity": [ { "Input Expressions": [ "in(test.t.col1, 1, 2, 3)" ] }, { "github.com/pingcap/tidb/pkg/planner/cardinality.GetRowCountByColumnRanges": [ { "ID": 1, "Ranges": [ "[1,1]", "[2,2]", "[3,3]" ] }, { "github.com/pingcap/tidb/pkg/statistics.ColumnStatsIsInvalid": { "EssentialLoaded": false, "InValidForCollPseudo": true, "IsInvalid": true, "NDV": 0, "TotalCount": 0 } }, { "Name": "col1", "Result": 30 } ] }, { "github.com/pingcap/tidb/pkg/planner/cardinality.GetRowCountByIndexRanges": [ { "ID": 1, "Ranges": [ "[1,1]", "[2,2]", "[3,3]" ] }, { "github.com/pingcap/tidb/pkg/statistics.IndexStatsIsInvalid": { "CollPseudo": true, "IsInvalid": true, "TotalCount": 0 } }, { "Name": "i", "Result": 30 } ] }, { "Expressions": [ "in(test.t.col1, 1, 2, 3)" ], "Selectivity": 0.003, "partial cover": false }, { "Result": 0.003 } ] } }, { "github.com/pingcap/tidb/pkg/planner/core.derivePathStatsAndTryHeuristics": [ { "github.com/pingcap/tidb/pkg/planner/core.deriveTablePathStats": null }, { "github.com/pingcap/tidb/pkg/planner/core.deriveIndexPathStats": null } ] }, { "github.com/pingcap/tidb/pkg/planner/core.generateIndexMergePath": null }, { "Access paths": [ { "AccessConditions": [], "CountAfterAccess": 10000, "CountAfterIndex": 0, "IndexFilters": [], "TableFilters": [ "in(test.t.col1, 1, 2, 3)" ] }, { "AccessConditions": [ "in(test.t.col1, 1, 2, 3)" ], "CountAfterAccess": 30, "CountAfterIndex": 30, "IndexFilters": [], "IndexName": "i", "TableFilters": [] } ] } ] } ] } ] } } ] } ] } ] ] } ]