SQL 语句总结,这些可别再忘记了

底下这些最容易忘:

  • 如果有主键或者唯一键冲突则不插入:insert ignore into。

  • 如果有主键或者唯一键冲突则更新,注意这个会影响自增的增量:INSERT INTO room_remarks(room_id,room_remarks)VALUE(1,"sdf") ON DUPLICATE KEY UPDATE room_remarks = "234"。

  • 如果有就用新的替代,values 如果不包含自增列,自增列的值会变化:REPLACE INTO room_remarks(room_id,room_remarks) VALUE(1,"sdf")。

  • 备份表:CREATE TABLE user_info SELECT * FROM user_info。

  • 复制表结构:CREATE TABLE user_v2 LIKE user。

  • 从查询语句中导入:INSERT INTO user_v2 SELECT * FROM user 或者 INSERT INTO user_v2(id,num) SELECT id,num FROM user。

  • 连表更新:UPDATE user a, room b SET a.num=a.num+1 WHERE a.room_id=b.id。

  • 连表删除:DELETE user FROM user,black WHERE user.id=black.id。

 

锁相关(底下的很少用)

  • 共享锁:select id from tb_test where id = 1 lock in share mode。

  • 排它锁:select id from tb_test where id = 1 for update。

 

优化时用到(得记住):

  • 强制使用某个索引:select * from table force index(idx_user) limit 2。

  • 禁止使用某个索引:select * from table ignore index(idx_user) limit 2。

  • 禁用缓存(在测试时去除缓存的影响):select SQL_NO_CACHE from table limit 2。

 

SQL 编写得注意的:

  • where 语句的解析顺序是从右到左,条件尽量放 where 不要放 having。

  • 采用延迟关联(deferred join)技术优化超多分页场景,比如 limit 10000,10,延迟关联可以避免回表。

  • distinct 语句非常损耗性能,可以通过 group by 来优化。

  • 连表尽量不要超过三个表。

答案更多mysql内容:V信扫描下面二维码,关注后回复“mysql”即可~

https://i-blog.csdnimg.cn/blog_migrate/4f7d3101fe74b4c0d3acf80f95cb8812.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TJ统计

关注公众号:Java后端技术栈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值