› 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
seagull7558
V2EX  ›  MySQL

sql 优化求指导

  •  
  •   seagull7558 · Sep 29, 2020 · 3489 views
    This topic created in 2194 days ago, the information mentioned may be changed or developed.

    SELECT X,X,X,X FROM A LEFT JOIN B ON a.id = b.a_id GROUP BY b.spell_name ORDER BY b.code

    类似于这种查 A 表 但使用 B 表字段做排序和分组的 SQL 该如何添加索引呢?

    6 replies  •  2022-11-04 16:15:47 +08:00
    bigNewsMaker
        1
    bigNewsMaker  
       Sep 29, 2020
    改成 right join,然后在 b 表上加索引?
    fuyufjh
        2
    fuyufjh  
       Sep 29, 2020
    * 改成 inner join ( inner join 可以左右对调,left join 不可以),然后在 b.spell_name 上加索引
    * 另外,这是一个典型的分析型查询,建议导到其他分析型数据库里做
    maigebaoer
        3
    maigebaoer  
       Sep 29, 2020 via Android   ❤️ 1
    你先把 b 表 group,order 后的取出来,再和 a 表 join,看看如何?
    hooopo
        4
    hooopo  
       Sep 29, 2020 via Android
    一定是先排序后 join 咯
    l00t
        5
    l00t  
       Sep 29, 2020   ❤️ 1
    加在关联条件上,也就是 ID 。group by 的字段不用考虑,这部分不需要索引。

    楼上的一些回答简直不懂 SQL,left join 和 right join / inner join 压根不等价,出来的结果集都不一样,能随便换?
    U87
        6
    U87  
       Nov 4, 2022
    @l00t 请教下,goupby 后字段不也是可以走索引的吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2306 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 04:53 · PVG 12:53 · LAX 21:53 · JFK 00:53
    ♥ Do have faith in what you're doing.