V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
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
yaoweber
V2EX  ›  MySQL

mysql 中,如果一张表没有主键也没有索引,执行 delete 会进行怎么样的操作?

  •  
  •   yaoweber · 2019-02-14 10:08:18 +08:00 · 5092 次点击
    这是一个创建于 2113 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如: 表 1: id name addr 1 zhangsan xxx 2 lisi xxx 3 wangwu xxx

    将进行 delete 操作: delete from 表 1 where id=3; 数据库会进行什么操作?

    是全表扫描一列一列的对比?生成的 binlog 会是什么样呢?

    8 条回复    2019-02-22 18:57:21 +08:00
    banxi1988
        1
    banxi1988  
       2019-02-14 10:35:25 +08:00   ❤️ 1
    其实你没有设置主键,MySQL 内部也会维护一个跟主键类似的东西。
    wd
        2
    wd  
       2019-02-14 13:45:20 +08:00 via iPhone
    全表扫描 一行一行比
    keepmovingbuddy
        3
    keepmovingbuddy  
       2019-02-14 16:08:34 +08:00
    用 explain 命令执行一下就知道数据库具体怎么执行你的命令了
    yaoweber
        4
    yaoweber  
    OP
       2019-02-14 16:15:51 +08:00
    @banxi1988 现在问题是我都不会走主键
    yaoweber
        5
    yaoweber  
    OP
       2019-02-14 16:16:31 +08:00
    @wd 一行一行对比没有毛病,但是已经定位到某一行,然后怎么比呢?
    wd
        6
    wd  
       2019-02-14 16:40:51 +08:00 via iPhone
    @yaoweber #5 比你的 where 指定的那列呀
    msg7086
        7
    msg7086  
       2019-02-14 22:39:30 +08:00
    已经定位到某一行了还比什么?直接删掉这行啊!
    c4f36e5766583218
        8
    c4f36e5766583218  
       2019-02-22 18:57:21 +08:00
    @yaoweber 你不是写了 where id=3 ?(读取一行判断 id=3,删除,继续下一行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3016 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 14:50 · PVG 22:50 · LAX 06:50 · JFK 09:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.