zoukankan      html  css  js  c++  java
  • 2020-12-26:mysql中,表person有字段id、name、age、sex,id是主键,name是普通索引,age和sex没有索引。select * from person where id=1 and name='james' and age=1 and sex=0。请问这条语句有几次回表?

    2020-12-26:mysql中,表person有字段id、name、age、sex,id是主键,name是普通索引,age和sex没有索引。select * from person where id=1 and name='james' and age=1 and sex=0。请问这条语句有几次回表?

    福哥答案2020-12-26:

    答案是没有回表。

    一般题目是判断有没有回表,而这道题是要说出有几次回表。

    刚开始以为会用到回表。后来想了想,没有回表。id是等值查询,顶多命中1条数据。然后再对这1条数据做name过滤,就这么1条数据,没必要回表查询,连我都能想到,mysql的作者更能想到,mysql没那么傻。

    有什么不对的地方,请直接留言评论。

    1.创建表和插入数据:
    -- ----------------------------
    -- Table structure for `person` 表结构
    -- ----------------------------
    DROP TABLE IF EXISTS `person`;
    CREATE TABLE `person` (
    `id` int(11) NOT NULL,
    `name` varchar(255) NOT NULL,
    `age` int(11) NOT NULL,
    `sex` tinyint(4) NOT NULL,
    PRIMARY KEY (`id`),
    KEY `name` (`name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    -- ----------------------------
    -- Records of person,表中记录
    -- ----------------------------
    INSERT INTO `person` VALUES ('1', 'james', '11', '1');
    INSERT INTO `person` VALUES ('2', 'haha', '12', '0');
    INSERT INTO `person` VALUES ('3', '福大大', '13', '2');

    2.查看执行计划:
    EXPLAIN SELECT * FROM person WHERE id=3;
    EXPLAIN SELECT * FROM person WHERE id=3 AND name='福大大';
    EXPLAIN SELECT * FROM person WHERE id=3 AND name='福大大' AND age=13;
    EXPLAIN SELECT * FROM person WHERE id=3 AND name='福大大' AND age=13 AND sex=2;


    ***
    [评论](https://user.qzone.qq.com/3182319461/blog/1608939505)

  • 相关阅读:
    组合模式及C++实现
    YUV422(UYVY)转RGB565源代码及其讲解.md
    会用errno,事半功倍
    可变参数宏
    camera理论基础和工作原理
    !!!??? 2.3 核心模块与应用程序的对比
    KVM与VMware的性能比较
    单片机中定时器与计数器的区别
    编译器对变量的内存分配方式
    【转载】Modelsim 与Vivado联合仿真版本对应问题
  • 原文地址:https://www.cnblogs.com/waitmoon/p/14194604.html
Copyright © 2011-2022 走看看