zoukankan      html  css  js  c++  java
  • Mysql 和Oracle rows 区别

    mysql>  explain select t1.* from t2 ,t1 where t2.id=t1.id and t2.id<3;
    +----+-------------+-------+------+---------------+------+---------+------+--------+----------------------------------------------------+
    | id | select_type | table | type | possible_keys | key  | key_len | ref  | rows   | Extra                                              |
    +----+-------------+-------+------+---------------+------+---------+------+--------+----------------------------------------------------+
    |  1 | SIMPLE      | t2    | ALL  | NULL          | NULL | NULL    | NULL |    134 | Using where                                        |
    |  1 | SIMPLE      | t1    | ALL  | NULL          | NULL | NULL    | NULL | 392625 | Using where; Using join buffer (Block Nested Loop) |
    +----+-------------+-------+------+---------------+------+---------+------+--------+----------------------------------------------------+
    2 rows in set (0.00 sec)
    
    mysql> select count(*) from t2;
    +----------+
    | count(*) |
    +----------+
    |      134 |
    +----------+
    1 row in set (0.00 sec)
    
    
    mysql> select count(*) from t2 where id<3;
    +----------+
    | count(*) |
    +----------+
    |      128 |
    +----------+
    1 row in set (0.00 sec)
    驱动表 一般返回较少的记录:
    
    
    
    mysql> explain select t1.* from (select * from t2 where id<3) t2 ,t1 where t2.id=t1.id;
    +----+-------------+------------+------+---------------+-------------+---------+--------------+--------+-------------+
    | id | select_type | table      | type | possible_keys | key         | key_len | ref          | rows   | Extra       |
    +----+-------------+------------+------+---------------+-------------+---------+--------------+--------+-------------+
    |  1 | PRIMARY     | t1         | ALL  | NULL          | NULL        | NULL    | NULL         | 392625 | Using where |
    |  1 | PRIMARY     | <derived2> | ref  | <auto_key0>   | <auto_key0> | 5       | DEVOPS.t1.id |     10 | NULL        |
    |  2 | DERIVED     | t2         | ALL  | NULL          | NULL        | NULL    | NULL         |    134 | Using where |
    +----+-------------+------------+------+---------------+-------------+---------+--------------+--------+-------------+
    3 rows in set (0.00 sec)
    
    是预估的需要扫描的行数
    不是返回的行数
    这就是两者的区别
    
    Oracle 是预估返回的行数
    
    MySQL 是预估扫描的行数,显示需要扫描的行数
    
    mysql> analyze table t2;
    +-----------+---------+----------+----------+
    | Table     | Op      | Msg_type | Msg_text |
    +-----------+---------+----------+----------+
    | DEVOPS.t2 | analyze | status   | OK       |
    +-----------+---------+----------+----------+
    1 row in set (0.17 sec)
    
    
    
    
    mysql>  explain select t1.* from t2 ,t1 where t2.id=t1.id and t2.id=3;
    +----+-------------+-------+------+---------------+------+---------+------+--------+----------------------------------------------------+
    | id | select_type | table | type | possible_keys | key  | key_len | ref  | rows   | Extra                                              |
    +----+-------------+-------+------+---------------+------+---------+------+--------+----------------------------------------------------+
    |  1 | SIMPLE      | t2    | ALL  | NULL          | NULL | NULL    | NULL |  16192 | Using where                                        |
    |  1 | SIMPLE      | t1    | ALL  | NULL          | NULL | NULL    | NULL | 392625 | Using where; Using join buffer (Block Nested Loop) |
    +----+-------------+-------+------+---------------+------+---------+------+--------+----------------------------------------------------+
    2 rows in set (0.00 sec)
    
    mysql> select count(*) from t2;
    +----------+
    | count(*) |
    +----------+
    |    16390 |
    +----------+
    1 row in set (0.01 sec)
    
    mysql> select count(*) from t2 where id=3;
    +----------+
    | count(*) |
    +----------+
    |        6 |
    +----------+
    1 row in set (0.01 sec)

  • 相关阅读:
    for循环中的作用域 闭包
    for,forEach,for in ,for of,$.each和$().each应用
    交换变量的值
    URL和URI的关系
    Delphi Idhttp.Get方法
    Delphi 时间转换异常处理(各Win系统时间显示格式不同)
    Delphi 接口统一方法
    Delphi 高级停靠(Dock)技术的实现[转载]
    delphi 客户端_动态装载插件DLL
    ADOQuery导出Excel超快(大量数据)!
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6199895.html
Copyright © 2011-2022 走看看