MySQL left join快 inner join慢
2015-10-13 15:02
465 查看
遇到一个非常诡异的问题
A(ID,a1,a2...),B(ID,b1,b2...)两表 ,两个ID列为主键,不过类型不一致 A的是mediumint B的是varchar
大概都有2000多条数据
使用最基础的左连接 要跑1.9S ,但是用inner join只要0.1S
于是乎就google “left join快 inner join慢 ”关键字
结果要么是对这两种连接的效率讨论 要么是说数据库的存储引擎不一致导致的
我发现确实A,B的存储引擎不一致,但是都改为innodb了 依然没作用
经过一天纠结后 试试运气把A的ID数据类型改为varchar 竟然变快了。。。
因为数据库表不是自己创建的 所以数据类型也就没太在意 至于深层次的数据类型转换还没细看 粗略查了一下 不过这种转换对查询的效率影响还是蛮大的。
特发帖纪念。。。
A(ID,a1,a2...),B(ID,b1,b2...)两表 ,两个ID列为主键,不过类型不一致 A的是mediumint B的是varchar
大概都有2000多条数据
使用最基础的左连接 要跑1.9S ,但是用inner join只要0.1S
于是乎就google “left join快 inner join慢 ”关键字
结果要么是对这两种连接的效率讨论 要么是说数据库的存储引擎不一致导致的
我发现确实A,B的存储引擎不一致,但是都改为innodb了 依然没作用
经过一天纠结后 试试运气把A的ID数据类型改为varchar 竟然变快了。。。
因为数据库表不是自己创建的 所以数据类型也就没太在意 至于深层次的数据类型转换还没细看 粗略查了一下 不过这种转换对查询的效率影响还是蛮大的。
特发帖纪念。。。
相关文章推荐
- ubuntu mysql5.5安装备忘
- 转:中国省/市/县三级联动MySQL数据
- MySQL Front很讨厌的 Row XX doesn't contain data for all columns错误
- MySQL分表方法
- MySql:操作数据库以及一些常用的命令
- MySQL分表和分区的区别
- CetOS6.5下编译安装Mysql5.6.16
- mycat+percona+keepalived+haproxy
- MySQL中EXPLAIN的解释
- MySQL 5.6 & 5.7最优配置模板
- 存储过程(1)mysql中游标的使用
- mysql默认密码忘记,如何修改初始密码
- mysql查询是否存在某条记录,不存在则插入,存在则更新
- Mysql创建存储过程时,出现ERROR 1064 (42000):的原因的一种
- MySQL 百万级分页优化(Mysql千万级快速分页)
- Mysql导出结果到文件小技巧
- 数据库引擎介绍mysql
- mysql 视图
- MYSQL让别人远程访问自己的数据库
- MYSQL的常用命令和增删改查语句和数据类型