标签: explain

有人可以向我解释这个SQL查询吗?

我正在阅读这篇文章,我正在尝试理解这个SQL语句,但我仍然对SQL有些新意.

我不确定评论和c是什么意思.
我认为其中一个是表名,但我不确定另一个.此外,显然其中有一个子查询,我没有任何经验:

  SELECT c.id, c.user_id, c.body, c.deep, c.lineage, c.parent_id,
         (SELECT COUNT(*) 
            FROM comment 
           WHERE comment.lineage LIKE (CONCAT(c.lineage,'%')) 
             AND comment.lineage != c.lineage) AS replies
    FROM comment as c
ORDER BY c.lineage
Run Code Online (Sandbox Code Playgroud)

php sql explain

7
推荐指数
1
解决办法
255
查看次数

我在mysql查询中使用Join时出错了 - 解释结果也发布了

我有这个查询,只需要3.5秒来获取2条记录.然而,推荐书中有超过10万行,用户为13k,课程为850,考试为2.

SELECT t.*, u.name, f.feedback
FROM testmonials t
INNER JOIN user u ON u.id = t.userid
INNER JOIN courses co ON co.id = t.courseid
LEFT JOIN exam ex ON ex.id = t.exam_id
WHERE t.status = 4
AND t.verfication_required = 'Y'
AND t.verfication_completed = 'N'
ORDER BY t.submissiondate DESC
Run Code Online (Sandbox Code Playgroud)

.解释结果:.

id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra
1   SIMPLE  co  ALL     PRIMARY     NULL    NULL    NULL    850     Using temporary; Using filesort
1   SIMPLE  t   ref     CID,nuk_tran_user   CID     4   kms.co.id …
Run Code Online (Sandbox Code Playgroud)

mysql join explain

7
推荐指数
1
解决办法
526
查看次数

在mysql查询中理解EXPLAIN

我试图explain在查询中解释mysql(以两种不同的方式编写),这是表:

    create table text_mess(
    datamess timestamp(3) DEFAULT 0,
    sender bigint ,
    recipient bigint ,
    roger boolean,
    msg char(255),
    foreign key(recipient) 
            references users (tel) 
                        on delete cascade
                        on update cascade,
primary key(datamess,sender)
)
engine = InnoDB
Run Code Online (Sandbox Code Playgroud)

这是第一种查询类型:

    EXPLAIN
    select /*!STRAIGHT_JOIN*/datamess, sender,recipient,roger,msg
    from text_mess join (select max(datamess)as dmess
                    from text_mess 
                    where roger = true
                    group by sender,recipient) as max
                    on text_mess.datamess=max.dmess ; 
Run Code Online (Sandbox Code Playgroud)

这是第二个:

    EXPLAIN
    select /*!STRAIGHT_JOIN*/datamess, sender,recipient,roger,msg
    from  (select max(datamess)as dmess
                    from text_mess 
                    where roger = true
                    group by sender,recipient) …
Run Code Online (Sandbox Code Playgroud)

mysql explain

7
推荐指数
1
解决办法
1461
查看次数

为什么 Postgres EXPLAIN ANALYZEexecution_time 与我运行实际查询时不同?

我正在使用数据库客户端来测试。

使用EXPLAIN ANALYZE

Hash Join  (cost=5.02..287015.54 rows=3400485 width=33) (actual time=0.023..1725.842 rows=3327845 loops=1)
  Hash Cond: ((fact_orders.financial_status)::text = (include_list.financial_status)::text)
  CTE include_list
    ->  Result  (cost=0.00..1.77 rows=100 width=32) (actual time=0.003..0.004 rows=4 loops=1)
          ->  ProjectSet  (cost=0.00..0.52 rows=100 width=32) (actual time=0.002..0.003 rows=4 loops=1)
                ->  Result  (cost=0.00..0.01 rows=1 width=0) (actual time=0.000..0.000 rows=1 loops=1)
  ->  Seq Scan on fact_orders  (cost=0.00..240253.85 rows=3400485 width=38) (actual time=0.006..551.558 rows=3400485 loops=1)
  ->  Hash  (cost=2.00..2.00 rows=100 width=32) (actual time=0.009..0.009 rows=4 loops=1)
        Buckets: 1024  Batches: 1  Memory Usage: 9kB
        ->  CTE Scan on …
Run Code Online (Sandbox Code Playgroud)

sql postgresql query-optimization explain sql-execution-plan

7
推荐指数
1
解决办法
2770
查看次数

MySQl解释Extra“Using where”的真正含义是什么?

根据MySQL文档,使用where意味着:WHERE子句用于限制哪些行与下一个表匹配或发送到客户端。

据我了解,这意味着如果您的sql语句有where条件,则您的解释中会出现“Using where”额外信息。根据我的经验,这似乎意味着 MySQL 存储引擎发现索引无法覆盖某些列,并且必须检索行数据。例如:

在此输入图像描述

谁能解释一下Using where的真正含义?

mysql explain sql-execution-plan

7
推荐指数
1
解决办法
3849
查看次数

MySQL 中使用文件排序意味着什么?

我想知道 MySQL 中使用文件排序是什么意思?

explain select * from user order by user_id;
Run Code Online (Sandbox Code Playgroud)

当我使用“order by”时它就会出现。

1,SIMPLE,orderitems,,ALL,,,,,1,100,Using filesort
Run Code Online (Sandbox Code Playgroud)

“使用文件排序”是额外的。谢谢大家!

mysql sql select sql-order-by explain

7
推荐指数
1
解决办法
3570
查看次数

SQL中Join之前或Join之后的过滤

我有两个查询来获取相同的数据,它们或多或少具有相同的执行时间。

SELECT name AS prog_name,d.chap_name,d.vid_name,d.idvideo FROM program 
     JOIN (SELECT name AS chap_name,chapter.idprogram, c.vid_name,c.idvideo FROM chapter 
     JOIN (SELECT a.name AS vid_name, a.idvideo, b.idchapter FROM video a 
     JOIN (SELECT idvideo,idchapter,x.idchaptervideo FROM chaptervideo 
     JOIN (SELECT idchaptervideo FROM prescriptionvideo  WHERE idprescription=50)x 
     ON x.idchaptervideo=chaptervideo.idchaptervideo) b 
     ON b.idvideo=a.idvideo)c 
     ON c.idchapter=chapter.idchapter) d 
     ON d.idprogram=program.idprogram

SELECT program.name AS prog_name,chapter.name as chap_name,video.name as vid_name,video.idvideo FROM prescriptionvideo
JOIN chaptervideo ON prescriptionvideo.idchaptervideo=chaptervideo.idchaptervideo
JOIN video on chaptervideo.idvideo=video.idvideo
JOIN chapter on chaptervideo.idchapter=chapter.idchapter
JOIN program on chapter.idprogram=program.idprogram
where idprescription=50
Run Code Online (Sandbox Code Playgroud)

有人可以指导我哪一个更好吗?我在前者的连接之前和后者的连接之后使用了过滤。MySQL 解释显示前者比后者有更多的行扫描。

mysql sql join explain

6
推荐指数
1
解决办法
5102
查看次数

MySql拒绝使用索引

我是查询优化的新手,所以我承认我还不了解所有内容,但我不明白为什么即使这个简单的查询也没有按预期进行优化。

我的桌子:

+------------------+-----------+------+-----+-------------------+----------------+
| Field            | Type      | Null | Key | Default           | Extra          |
+------------------+-----------+------+-----+-------------------+----------------+
| tasktransitionid | int(11)   | NO   | PRI | NULL              | auto_increment |
| taskid           | int(11)   | NO   | MUL | NULL              |                |
| transitiondate   | timestamp | NO   | MUL | CURRENT_TIMESTAMP |                |
+------------------+-----------+------+-----+-------------------+----------------+
Run Code Online (Sandbox Code Playgroud)

我的索引:

+-----------------+------------+-------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table           | Non_unique | Key_name          | Seq_in_index | Column_name      | Collation | Cardinality | Sub_part | Packed | Null | Index_type | …
Run Code Online (Sandbox Code Playgroud)

mysql indexing explain

6
推荐指数
1
解决办法
7224
查看次数

Hive 解释计划理解

有没有什么合适的资源可以让我们完全理解hive生成的解释计划?我曾尝试在 wiki 中搜索它,但找不到完整的指南来理解它。这是 wiki,它简要解释了解释计划的工作原理。但我需要有关如何推断解释计划的更多信息。 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Explain

hadoop hive explain sql-execution-plan hiveql

6
推荐指数
1
解决办法
2007
查看次数

为什么Mysql EXPLAIN中的EXTRA为NULL?为什么 >= 是使用索引条件?

mysql> CREATE TABLE `t` (
     `id` int(11) NOT NULL,
     `a` int(11) DEFAULT NULL,
     `b` int(11) DEFAULT NULL,
     PRIMARY KEY (`id`),
     KEY `a` (`a`),
     KEY `b` (`b`)
   ) ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)

有一个名为 t 的表,它有两个名为 a 和 b 的索引。插入t 100000行数据

mysql> create procedure idata()
  begin
   declare i int;
     set i=1;
     while(i<=100000)do
       insert into t values(i, i, i);
       set i=i+1;
     end while;
   end;
Query OK, 0 rows affected (0.01 sec)

mysql> delimiter ;
mysql> call idata();
Run Code Online (Sandbox Code Playgroud)

我做了一些实验,一些如下

有一些实验

现在,我想知道;

(1)为什么explain select * from t where …

mysql innodb explain

6
推荐指数
1
解决办法
750
查看次数