
Mysql
xiangweiqiang
这个作者很懒,什么都没留下…
展开
-
如何在表中新增一个字段,并要该字段排在指定的字段xxx字段的后面
虽然SQL标准并不直接支持在ALTER TABLE中添加字段到指定位置,但是可以间接实现,示例如下。原创 2024-04-13 21:57:06 · 1459 阅读 · 0 评论 -
MySQL枚举类型的小范围字段应不应该加索引?
因为sex='1’有两千多万数据,占了总表数据记录数的绝大部分,所以即使sex加了索引,在这条SQL中的意义不大,也差不多要全表扫描,内存也基本会溢出。案例:表引擎是InnoDB,有三千多万的数据,id为主键自增,sex性别是enum(‘0’,‘1’,‘2’),数据大小是1.8G,索引大小是1.2G,合计3G。如果sex没有加索引,那么这条SQL就会全表扫描,三千多万的数据量进行全表扫描,内存基本会溢出,不被打死才怪。回答这个问题前,要根据实际情况来,如果表数据不大,只有几百几千,那完全没有必要加索引;..原创 2022-08-30 15:46:29 · 3270 阅读 · 0 评论 -
Mysql大表分页查询时limit优化
虽然create_time字段使用了索引,但是由于limit是从结果集中取出偏移量之后的记录数,上面的SQL,需要进行(500w+50)次回表才能取出50条数据,前面的500w次回表根本不需要,完全是浪费时间和性能,故优化就是减少前面的500w次回表,只要50次回表拿数据就可以了。第二次查的时候只需要把这50个id回表去取数据就好。说明:MySQL版本是5.7,使用的表引擎是InnoDB,表有三千多万的数据,id为主键自增,数据大小是1.8G,索引大小是1.2G,合计3G。花费的时间为3.3秒左右。...原创 2022-08-30 14:51:00 · 847 阅读 · 2 评论 -
DBeaver常用快捷键(含复制当前行)
DBeaver ctrl + alt + F 对sql语句进行格式化,对于很长的sql语句很有用。ctrl + shift + U 将选定的sql转换成大写字母。ctrl + shift + L 将选定的sql转换成小写字母。ctrl + alt + ↓ 向下复制一行 复制当前行。ctrl + shift + ↑ 向上移动一行。ctrl + shift + ↓ 向下移动一行。ctrl + alt + ↑ 向上复制一行。ctrl + shift + E 执行计划。ctrl + shift+ / 块注释。原创 2022-08-30 14:21:00 · 6904 阅读 · 0 评论 -
Mysql 事务死锁的模拟以及总结
1.死锁是什么?怎么产生的?答:死锁是多个事务因为争夺资源而陷入阻塞,相互等待的现象。比如上面的例子中,事务A在等待事务B释放锁,而事务B也在等待事务A释放锁,这种相互等待的现象就会产生死锁。2.死锁有什么危害或影响?答:死锁会长期占用数据库的连接资源,影响性能;还可能会造成雪崩效应,拖垮整个应用。3.当死锁产生时要如何解决?答:可以先进行手动的kill掉死锁进程,然后分析死锁日志,找到原因在去解决。4.怎样避免死锁的产生?答:①获取锁的时候可以按照权重保证顺序获取。原创 2022-08-20 16:55:38 · 1475 阅读 · 0 评论 -
Mysql 的存储过程和触发器
存在数据库完成特定功能的SQL语句集,一次创建,长期重复调用。特殊的存储过程,达到条件后会自动执行写的操作(增、删、改)。原创 2022-08-18 19:33:46 · 338 阅读 · 0 评论 -
PHP 单例模式连接数据库
PHP常见的六大设计模式,包括了单例模式、工厂模式、注册树模式、策略模式、适配器模式以及观察者模式。单例模式的特征是“三私一公” ,可适用的场景有,创建唯一的数据库连接对象。原创 2022-08-18 17:12:26 · 604 阅读 · 0 评论