
mysql
hashdog
写下疑问,记录成长
展开
-
join、inner join、left join、right join、full join区别
join等价于inner join内连接抄,是返回两个表中都有的符合条件的行。left join左连接,是返回左袭表知中所有的行及右表中符合条件的行。right join右连接,是返回右表中所有的行及左表中符合条件的行。full join全连接,是返回左表中所有的行及右表中所有的行,并按条件连接。通常情况下,left join肯定比inner join返回的行数多道。...原创 2020-06-18 01:21:40 · 2080 阅读 · 0 评论 -
SHOW STATUS LIKE Last_query_cost
MySQL中可以通过show status like 'last_query_cost' 来查看查上一个查询的代价,而且它是io_cost和cpu_cost的开销总和,它通常也是我们评价一个查询的执行效率的一个常用指标。 (1)它是作为比较各个查询之间的开销的一个依据。 (2)它只能检测比较简单的查询开销,对于包含子查询和union的查询是测试不出来的。 (3)当我们执行查询的时候,MySQL会自动生成一个执行计划,也就是query plan,而且通常有很多种不...原创 2020-06-18 01:18:17 · 766 阅读 · 0 评论 -
MySQL innodb_autoinc_lock_mode设置
转https://www.jianshu.com/p/f72b7bfa7467https://dev.mysql.com/doc/refman/8.0/en/innodb-auto-increment-handling.html国内的文章看得真是蛋疼,跟官网的文档意思差别太大。insert 语句分类insert 语句分三种类型:simple insert, bulk insert, mixed insert simple insert insert 时可以预先知道插入的行记录数量。例如转载 2020-06-12 00:27:55 · 4358 阅读 · 5 评论 -
mysql进阶:optimize table命令
转https://blog.youkuaiyun.com/chenpeng19910926/article/details/79739722在使用mysql的时候有时候,可能会发现尽管一张表删除了许多数据,但是这张表表的数据文件和索引文件却奇怪的没有变小。这是因为mysql在删除数据(特别是有Text和BLOB)的时候,会留下许多的数据空洞,这些空洞会占据原来数据的空间,所以文件的大小没有改变。这些空洞在以后插入数据的时候可能会被再度利用起来,当然也有可能一直存在。这种空洞不仅额外增加了存储代价,同时也因为数据碎片转载 2020-06-12 00:25:28 · 475 阅读 · 0 评论 -
【MySQL】mysql使用crc32函数优化索引
参考mysql高性能第三版148页创建高性能索引创建自定义哈希索引,在遇到索引列是比较长的字符的时候可以使用例如是urlselect CRC32("www.hashdog.xyz")多创建一个哈数值的列,使用该列作为索引列,这样做性能会非常高,因为mysql优化器会使用这个选择性很高而体积很小的基于url列的索引来完成查找;但是需要多维护一个哈希列,可以通过触发器进行维护,详情参考mysql高性能第三版149页如果采用这种方式,记住不要用SHA1()和MD5()做哈..原创 2020-06-09 22:54:04 · 1087 阅读 · 0 评论 -
【MySQL】mysql使用INET_ATON()函数与INET_NTOA()函数存取IP地址
人们常用VARCHAR(15)存储ip地址,然而他们实际上是32位无符号整数,用小数点将地址分成四段,只是为了方便阅读.所以应该用无符号整数存储ip地址mysql提供INET_ATON()与INET_NTOA()函数提供转换SELECT INET_ATON("192.160.2.181")SELECT INET_NTOA(3231711925)...原创 2020-06-09 01:03:32 · 471 阅读 · 0 评论 -
【MySql】mysql中using如何使用
using等价于join操作中的on using自连接挺好用SELECT a.dept_id, b.dept_idFROM sys_dept aJOIN sys_dept b USING (dept_id,parent_id)SELECT a.dept_id, b.dept_idFROM sys_dept aLEFT JOIN sys_dept b ON a.dept_id=b.dept_id and a.parent_id=b.parent_id...原创 2020-06-09 00:06:02 · 202 阅读 · 0 评论 -
MySQL的char和varchar针对空格的处理
MySQL的char和varchar存储和查询中包含空格的实验MySQL版本一、测试char包含空格的存储和查询测试发现,存储的数据,char数据类型的右侧空格存储的时候被删除了,但是左侧空格还保留。测试发现,查询的时候,char数据类型只是会判断查询条件中左侧的空格,右侧的空格也会忽略,因此查询1和查询3的结果是一致的。二、测试varchar包含空格的存储和查询测试发现,存储的数据,varchar数据类型的空格均保留,没有...转载 2020-06-08 23:42:44 · 1902 阅读 · 0 评论 -
【MySQL索引】MySQL索引分类,90%的开发都不知道
转载:https://cloud.tencent.com/developer/article/1603199目录一、根据底层数据结构划分1. hash索引2. B+树索引二、根据索引字段个数划分三、根据是否是在主键上建立的索引进行划分1. 主键索引2. 辅助索引四、根据数据与索引的存储关联性划分1. 聚簇索引2. 非聚簇索引五、其他分类1. 唯一索引2. 全文索引六、总结MySQL的索引分类问题一直让人头疼,几乎所有的资料都会给你列一个长长的.转载 2020-06-05 02:04:27 · 526 阅读 · 0 评论 -
【数据库外键】为什么不推荐使用物理外键?
目录一、外键使用场景二、为什么不使用物理外键1.参考阿里手册2.物理外键的优点3.物理外键的缺点三、总结一、外键使用场景今天测试员测出来许多bug,是由于未解决外键关系照常的我问题.A表的id是B表的外键,业务上B表通过外键关联A表获取A表的nameA表删除后,B表无法获取到name通过加逻辑外键来解决了这个问题二、为什么不使用物理外键1.参考阿里手册2.物理外键的优点保证数据的完整性和一致性 级联操作方便 将数据完整性判断托付给...原创 2020-06-04 10:31:28 · 1766 阅读 · 0 评论 -
Mysql 多表关联执行复杂update
1update biaozhunhuamuban ainner join dept b on a.dept_id=b.idset a.path= replace(a.path,"tt平台\tt资料",b.dept_name)where a.dept_id =72update biaozhunhuamuban a ,dept bset a.path= replace(a.path,"tt平台\tt资料",b.dept_name)where a.dept_id=b.id and.原创 2020-05-25 15:59:57 · 214 阅读 · 0 评论 -
Mysql中MVCC的使用及原理详解
准备测试环境:Mysql 5.7.20-log数据库默认隔离级别:RR(Repeatable Read,可重复读),MVCC主要适用于Mysql的RC,RR隔离级别创建一张存储引擎为testmvcc的表,sql为:CREATE TABLE testmvcc (id int(11) DEFAULT NULL,name varchar(11) DEFAULT NUL...转载 2020-05-07 21:55:07 · 334 阅读 · 0 评论 -
mysql 查询表相关信息
以查user表为例show table status like '%user'原创 2020-05-07 21:21:35 · 191 阅读 · 0 评论 -
mysql定时任务之事件的开启和调用
检测事件是否开启show variables like 'event_scheduler';开启事件set global event_scheduler = on;创建一个存储过程delimiter //create procedure test()beginupdate test fdCreate = now();end;创建一个事件create event if n...原创 2020-04-07 09:37:56 · 191 阅读 · 0 评论 -
mysql开启事件计划
mysql开启事件: set global event_scheduler = on; 但是事件开启后会在mysql服务重启之后自动关闭,需要在手动执行这一行开启。 在my.cnf(mysql配置文件)中[mysqld]部分中添加下面内容,重启MYSQLevent_scheduler=ON 这样服务器重启或者mysql重启都不会影响正在开启的事件...原创 2020-03-15 15:56:12 · 219 阅读 · 0 评论 -
SQL中PK、UK、DF、CK、FK的意思
PK 主键constraint primary key``UK 唯一约束constraint unique keyDF 约束默认constraint default forCK 检查约束constraint check()FK 主外键关系constraint foreign references...原创 2020-02-27 20:42:51 · 4286 阅读 · 0 评论 -
使用 select into语句 将一个表中的数据插入到另一个表
您可以把所有的列插入新表:SELECT *INTO new_table_name [IN externaldatabase] FROM old_tablename或者只把希望的列插入新表:SELECT column_name(s)INTO new_table_name [IN externaldatabase] FROM old_tablename...原创 2020-02-25 18:33:25 · 1277 阅读 · 0 评论 -
使用insert into 将一个表的数据插入到另一个表
我们可以从一个表中复制所有的列插入到另一个已存在的表中:INSERT INTO table2SELECT * FROM table1;或者我们可以只复制希望的列插入到另一个已存在的表中:INSERT INTO table2(column_name(s))SELECT column_name(s)FROM table1;...原创 2020-02-25 18:31:30 · 22058 阅读 · 0 评论 -
达梦数据库导入.dmp
1.模式上右键选择导入2.先选择目录,再选择文件,dm把路径分开了(目录和文件需要分开指定)3.确定后,导入完成,刷新模式即可原创 2020-02-03 16:38:13 · 5881 阅读 · 1 评论 -
cmd查询mysql版本
mysql -v原创 2020-02-03 11:10:39 · 5813 阅读 · 0 评论 -
通过sql查询mysql的版本
SELECT VERSION()原创 2020-02-03 11:09:04 · 575 阅读 · 0 评论 -
数据库优化/SQL优化
目录MySQL性能最大数据量最大并发数查询耗时0.5秒实施原则数据表设计数据类型避免空值text类型优化索引优化索引分类索引优化SQL优化分批处理操作符<>优化OR优化IN优化不做列运算避免Select allLike优化...原创 2020-01-28 00:25:55 · 577 阅读 · 0 评论 -
mysql进程卡死,navicat无响应?
查看所有堵塞进程 showprocesslist; 然后kill id 比如杀第二个 kill 128103原创 2020-01-18 14:30:37 · 1997 阅读 · 1 评论 -
navicat在还原mysql数据的时候,只建表没有插入数据??
是由于max_allowed_packed设置过小,而insert时数据过多导致出错,修改max_allowed_packed的值即可恢复,可修改为50M。1.在my.ini(my.cnf)文件中添加或者修改以下变量:max_allowed_packet = 50Mmax_allowed_packet 作用是用来控制其通信缓冲区的最大长度。2.命令:/...原创 2020-01-18 13:53:27 · 431 阅读 · 0 评论