遇到一个非常诡异的问题
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 竟然变快了。。。
因为数据库表不是自己创建的 所以数据类型也就没太在意 至于深层次的数据类型转换还没细看 粗略查了一下 不过这种转换对查询的效率影响还是蛮大的。
特发帖纪念。。。
数据库类型转换对查询效率的影响
作者遇到一个数据库查询性能问题,通过将不同类型的主键进行转换,显著提高了查询速度。文章探讨了数据库表存储引擎一致性与数据类型不一致对查询效率的影响。
677

被折叠的 条评论
为什么被折叠?



