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

mysql or 关键字的执行问题

  •  
  •   moxiaowei · Jan 5, 2023 · 2655 views
    This topic created in 1359 days ago, the information mentioned may be changed or developed.

    关于 mysql 的 or 查询,比如 select...from...where name=xxx or age =xxx 。这一条 sql 语句,在 mysql 执行的时候,是把 sql 拆分为 select...from...where name=xxx 拿到结果临时存起来再执行 select...from...where age =xxx 再跟前面的结果进行合并呢,还是 就当做一条语句执行?因为,在看关于 or 的索引失效的问题,解决方案是 or 前后的字段都需要加索引,我感觉是把 select...from...where name=xxx or age =xxx 拆分开执行的?有没有大佬跟我讲解下。谢谢

    4 replies  •  2023-01-05 18:51:17 +08:00
    shanghai1943
        1
    shanghai1943  
       Jan 5, 2023
    mysql 啥版本的。可以 explain 看看查询计划的结果。实在不放心的话,就把 or 语句拆成 union 的写法。但不管怎样,执行 SQL 前养成先 explain 一下的习惯总归是不错的。
    GuardX
        2
    GuardX  
       Jan 5, 2023
    explain 看下走的哪个索引
    8355
        3
    8355  
       Jan 5, 2023
    肯定是拆分执行更好
    但如果需要排序等等其他操作你的程序整体实行速度可能并不一定比 or 要好 看整体性能不要只看 sql
    leopod1995
        4
    leopod1995  
       Jan 5, 2023
    没有索引的话 是全表扫。 可以理解为 fetch 一条数据进行匹配,or 在这种情况下是同时匹配条件的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2415 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 05:03 · PVG 13:03 · LAX 22:03 · JFK 01:03
    ♥ Do have faith in what you're doing.