› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
rateltalk
V2EX  ›  MySQL

左连接表查询用到了索引,为何还是走全表扫描?

  •  
  •   rateltalk ·
    shangdev · Sep 21, 2022 · 2786 views
    This topic created in 1466 days ago, the information mentioned may be changed or developed.


    如图,t2 表走索引只有 37 行,左连接表 t1 也用到了索引,但是走的却是全表扫描。

    请教这个是什么情况,怎么优化呢、
    Supplement 1  ·  Sep 22, 2022
    确实走索引了,我误以为查所有记录数就是没走索引、、
    10 replies  •  2022-09-22 08:13:04 +08:00
    F281M6Dh8DXpD1g2
        1
    F281M6Dh8DXpD1g2  
       Sep 21, 2022
    哪里全表扫描了?
    不是写了一个是主键一个是索引么?
    kera0a
        2
    kera0a  
       Sep 21, 2022
    t1.id 和 t2.file_id 的编码一样么?
    rateltalk
        3
    rateltalk  
    OP
       Sep 21, 2022
    @liprais 但是 t2 表总行数也是 113283
    rateltalk
        4
    rateltalk  
    OP
       Sep 21, 2022
    @liprais 说错了,是 t1 表
    F281M6Dh8DXpD1g2
        5
    F281M6Dh8DXpD1g2  
       Sep 21, 2022
    你知道 left join 啥意思么?
    @s609926202
    Wdafff
        6
    Wdafff  
       Sep 21, 2022
    先条件过滤再 join
    nekoneko
        7
    nekoneko  
       Sep 21, 2022
    没问题啊
    lookStupiToForce
        8
    lookStupiToForce  
       Sep 21, 2022
    key 里用到 PRIMARY ,怎么会是全表扫描
    你可以再确认一下 t2 那 37 条数据是否真的能关联到 11w+行,如果确认这个估计有错误,可以 analyze 一下 t1 表
    xuanbg
        9
    xuanbg  
       Sep 21, 2022
    这个执行计划里面没有全表扫描啊,不是很正常的一个查询么。。
    hscovo
        10
    hscovo  
       Sep 22, 2022
    left join 我理解就是取出左表的每一行记录,去右表里面查询吧?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2631 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 01:35 · PVG 09:35 · LAX 18:35 · JFK 21:35
    ♥ Do have faith in what you're doing.