标签: explain

我如何使用DB2 Explain?

我如何使用DB2的Explain函数? - 既可以运行它,也可以用它来优化查询.有没有更好的DB2工具?

我之前已经建立了查询,但是我必须告诉他们需要多长时间的唯一方法就是运行它们并计算时间 - 这几乎不是理想的.

编辑:我的答案结果是"你做不到.你没有,也无法获得访问权限." 你不喜欢官僚主义吗?

sql db2 query-optimization explain

23
推荐指数
3
解决办法
7万
查看次数

MySQL解释了eq_ref和ref类型的含义

当我们使用关键字"explain"为SQL查询添加前缀时,我们会得到一个包含一些列的表.请告诉我什么是"类型"列.是什么eq_refref意味着在这方面.

mysql database optimization explain

16
推荐指数
2
解决办法
8754
查看次数

当使用索引时,Mysql解释查询类型为"ALL"

我在Mysql中运行了一个查询,如下所示:

EXPLAIN
SELECT *
FROM(
        SELECT *  # Select Number 2
        FROM post
        WHERE   parentid = 13
        ORDER BY time, id
        LIMIT 1, 10
    ) post13_childs
JOIN post post13_childs_childs
ON post13_childs_childs.parentid = post13_childs.id
Run Code Online (Sandbox Code Playgroud)

结果是:

id |select_type  |table               |type |possible_keys  |key      |key_len  |ref              |rows    |Extra
1  |PRIMARY      |<derived2>          |ALL  | NULL          | NULL    |NULL     |NULL             |10      |
1  |PRIMARY      |post13_childs_childs|ref  |parentid       |parentid |9        |post13_childs.id |10      |Using where
2  |DERIVED      |post                |ALL  |parentid       |parentid |9        |                 |153153  |Using where; Using filesort
Run Code Online (Sandbox Code Playgroud)

这意味着它使用了索引, …

mysql sql indexing query-optimization explain

15
推荐指数
2
解决办法
1万
查看次数

MySQL解释:导致'使用临时; 使用filesort'

我打算使用这个SQL SELECT创建一个视图,但它的解释显示它使用临时和使用filesort.我无法弄清楚我需要什么指数才能解决这个问题.大多数情况下,我想知道为什么它使用fileort intead使用索引进行排序.

这是我的表格:

CREATE TABLE `learning_signatures` (
  `signature_id` int(11) NOT NULL AUTO_INCREMENT,
  `signature_file` varchar(100) NOT NULL,
  `signature_md5` varchar(32) NOT NULL,
  `image_file` varchar(100) NOT NULL,
  PRIMARY KEY (`signature_id`),
  UNIQUE KEY `unique_signature_md5` (`signature_md5`)
) ENGINE=InnoDB AUTO_INCREMENT=640 DEFAULT CHARSET=latin1

CREATE TABLE `learning_user_suggestions` (
  `user_suggestion_id` int(11) NOT NULL AUTO_INCREMENT,
  `signature_id` int(11) NOT NULL,
  `ch` char(1) NOT NULL,
  `time_suggested` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `user_id` int(11) NOT NULL,
  PRIMARY KEY (`user_suggestion_id`),
  KEY `char_index` (`ch`),
  KEY `ls_sig_id_indx` (`signature_id`),
  KEY `user_id_indx` (`user_id`),
  KEY `sig_char_indx` (`signature_id`,`ch`)
) …
Run Code Online (Sandbox Code Playgroud)

mysql explain filesort

14
推荐指数
1
解决办法
2万
查看次数

MySQL的.为"OR"查询创建索引

我有一个包含INT列的200k条目表.我想创建一个索引来加快查询速度.这是我想要执行的查询:SELECT A,B,C,D,E FROM table WHERE A=23 and (B=45 or C=43).我创建了以下指标:B,ACD,C,ABC.

通过EXPLAIN命令,我发现MySQL选择了索引ACD.所以我一直用更多的值填充表格,我意识到MySQL正在上面的索引之间切换(并不总是相同的).

由于存在许多插入,具有各种索引将导致性能问题,并且我们可以假设该表由其他查询访问,这些查询需要不同的列,其中每个索引都有意义.

我知道USE INDEX(),但我想了解我们是否应该相信MySQL选择正确的索引.

mysql indexing explain

14
推荐指数
1
解决办法
2528
查看次数

MySQL EXPLAIN EXTENDED过滤列(显然不是百分比)

我一直在寻找这个,他们都说了某种百分比,解释一下:

EXPLAIN EXTENDED SELECT * FROM PageAccess ORDER BY AccessId DESC LIMIT 20;
SELECT COUNT(*) FROM PageAccess;
Run Code Online (Sandbox Code Playgroud)

赠送:

id, select_type, table, type, possible_keys, key, key_len, ref, rows, filtered, Extra
1, 'SIMPLE', 'PageAccess', 'index', '', 'PRIMARY', '4', '', 20, 9295.00, ''
Run Code Online (Sandbox Code Playgroud)

(是的,过滤= 9295.00)

和:

1830
Run Code Online (Sandbox Code Playgroud)

对于计数(*)

是的我想要最后20行,AccessId是自动递增的主键.

9295是什么意思!?

mysql explain

13
推荐指数
1
解决办法
1万
查看次数

JDBC Oracle - 获取查询的解释计划

我想知道如何使用Java获取解释计划.我需要这个的原因是因为我们有一个特殊用户可以制作报告的框架.这些报告有时会构建大量查询,我们希望在其中动态解释并存储成本.这样我们就可以在以后分析高成本查询并进行优化.

给出非法列异常的示例代码:

ResultSet rs = null;
   try {
        oracle = ConnectionManager.getConnection(ConnectionManager.Test);
        pstmt = oracle.prepareStatement("begin execute immediate 
        'explain plan for SELECT   1 from Dual'; end;");
        rs = pstmt.executeQuery();
        while (rs.next()) {
            System.out.println(rs.getString(1));
        }
Run Code Online (Sandbox Code Playgroud)

java oracle jdbc explain sql-execution-plan

12
推荐指数
2
解决办法
1万
查看次数

如何确定哪些更有效:DISTINCT还是EXES EXISTS?

例如,我有3个表:user,grouppermission,和他们之间有两个many2many关系:user_groupsgroup_permissions.

我需要选择给定用户的所有权限,不重复.每次遇到类似问题时,我都无法确定哪个版本的查询更好:

SELECT permisson_id FROM group_permission WHERE EXISTS(
    SELECT 1 FROM user_groups 
        WHERE user_groups.user_id = 42 
          AND user_groups.group_id = group_permission.group_id
)

SELECT DISTINCT permisson_id FROM group_permission
    INNER JOIN user_groups ON user_groups.user_id = 42 
           AND user_groups.group_id = group_permission.group_id 
Run Code Online (Sandbox Code Playgroud)

我有足够的经验可以根据解释得出结论.第一个查询有子查询,但我的经验表明第一个查询更快.也许是因为结果中有大量过滤后的权限.

在这个情况下,你会怎么做?为什么?谢谢!

mysql performance inner-join distinct explain

11
推荐指数
1
解决办法
6369
查看次数

为什么行返回"explain"不等于count()?

    mysql> select count(*) from table where relation_title='xxxxxxxxx';
+----------+
| count(*) |
+----------+
|  1291958 |
+----------+

mysql> explain select *  from table where relation_title='xxxxxxxxx';
+----+-------------+---------+-
| id | select_type | rows    |
+----+-------------+---------+-
|  1 | SIMPLE      | 1274785 | 
+----+-------------+---------+-
Run Code Online (Sandbox Code Playgroud)

我认为"解析select*from table where relation_title ='xxxxxxxxx';" 通过索引返回relation_title ='xxxxxxxxx'的行.但它比真正的数字要小.

mysql count explain

10
推荐指数
3
解决办法
8980
查看次数

SELECT语句不使用possible_keys

我有一个遗留系统的表,没有主键.它记录了工厂发布材料的交易数据.

为简单起见,我们可以说每行包含job_number,part_number,quantity&date_issued.

我在日期发布列中添加了一个索引.当我运行EXPLAIN SELECT*FROM issued_pa​​rts WHERE date_issued>'20100101'时,它显示如下:

+----+-------------+----------------+------+-------------------+------+---------+------+---------+-------------+
| id | select_type | table          | type | possible_keys     | key  | key_len | ref  | rows    | Extra       |
+----+-------------+----------------+------+-------------------+------+---------+------+---------+-------------+
|  1 | SIMPLE      | issued_parts   | ALL  | date_issued_alloc | NULL | NULL    | NULL | 9724620 | Using where |
+----+-------------+----------------+------+-------------------+------+---------+------+---------+-------------+

所以它看到了关键,但它不使用它?有人可以解释原因吗?

mysql indexing select explain

10
推荐指数
1
解决办法
5982
查看次数