暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 面试题(一):SQL 优化篇

4561

近期将会出几期 MySQL 相关的面试题,首先从 SQL 优化篇开始。


1、如何定位 MySQL 慢查询?如何分析 SQL 执行效率?Explain 的结果重点关注项。

答案参考慕课网专栏《一线数据库工程师带你深入理解 MySQL》02 快速学会分析SQL执行效率
https://www.imooc.com/read/43/article/682


2、举例说明哪些情况条件字段有索引也使用不了索引?

答案参考慕课网专栏《一线数据库工程师带你深入理解 MySQL》04 条件字段有索引,为什么查询也这么慢?

https://www.imooc.com/read/43/article/684


3、如何优化数据导入?

答案参考慕课网专栏《一线数据库工程师带你深入理解 MySQL》05 如何优化数据导入?
https://www.imooc.com/read/43/article/685


4、MySQL 排序方式有哪些?怎么确定某条排序语句所使用的排序方式?

答案参考慕课网专栏《一线数据库工程师带你深入理解 MySQL》06 让order by、group by查询更快
https://www.imooc.com/read/43/article/686


5、表 t1 结构如下:

    CREATE TABLE `t1` (        /* 创建表t1 */
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `a` int(20) DEFAULT NULL,
    `b` int(20) DEFAULT NULL,
    `c` int(20) DEFAULT NULL,
    `d` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    KEY `idx_c` (`c`)
    ) ENGINE=InnoDB CHARSET=utf8mb4 ;
    复制

    如果某个 MySQL 实例中存在大量下面的 SQL 语句,应该怎样设计索引?

      select id,a,b from t1 where a=1000 order by b;
      复制
      答案参考慕课网专栏《一线数据库工程师带你深入理解 MySQL》06-让order by、group by查询更快:2.1.2 多个字段排序优化
      https://www.imooc.com/read/43/article/686


      6、表 t1 结构如下:

        CREATE TABLE `t1` (             /* 创建表t1 */
        `id` int(11) NOT NULL auto_increment,
        `a` int(11) DEFAULT NULL,
        `b` int(11) DEFAULT NULL,
        `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
        `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间',
        PRIMARY KEY (`id`),
        KEY `idx_a` (`a`),
        KEY `idx_b` (`b`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
        复制

        下面这条 SQL 可以怎么优化:

          select * from t1 order by a limit 99000,2;
          复制
          答案参考慕课网专栏《一线数据库工程师带你深入理解 MySQL》07 换种思路写分页查询
          https://www.imooc.com/read/43/article/687


          7、如果第 6 问中的表 t1 在开始主键是自增的,但是中间有部分记录被删除了,也就是主键不连续的情况,下面这条 SQL  应该怎么优化?

            select * from t1 limit 99000,2;
            复制
            答案参考慕课网专栏《一线数据库工程师带你深入理解 MySQL》07 换种思路写分页查询的留言板块。
            https://www.imooc.com/read/43/article/687


            8、关联查询有哪些优化技巧?

            答案参考慕课网专栏《一线数据库工程师带你深入理解 MySQL》08 Join语句可以这样优化
            https://www.imooc.com/read/43/article/688


            9、哪种情况下,小表做驱动表跟大表做驱动表的执行效率是一样的?

            答案参考慕课网专栏《一线数据库工程师带你深入理解 MySQL》08 Join语句可以这样优化 的留言板块
            https://www.imooc.com/read/43/article/688


            10、count(a) 和 count(*) 的区别?count(1) 比 count(*) 快吗?

            答案参考慕课网专栏《一线数据库工程师带你深入理解 MySQL》09 为何count(*)这么慢?
            https://www.imooc.com/read/43/article/689


            文章转载自MySQL数据库联盟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论