mysql 条件与排序问题.
时间:2011-06-28
来源:互联网
SELECT * FROM dba AS T LEFT JOIN dbb AS Y ON Y.id=T.id WHERE T.gid=9 AND Y.name='love'
如果把Y.name='love' 放到ON 条件中, ON Y.id=T.id AND Y.name='love' 这样有什么区别? 性能差异明显不?
SELECT * FROM dba WHERE order = '1000'
这句sql默认排序是什么规律? 是按主键ASC还是什么?
如果把Y.name='love' 放到ON 条件中, ON Y.id=T.id AND Y.name='love' 这样有什么区别? 性能差异明显不?
SELECT * FROM dba WHERE order = '1000'
这句sql默认排序是什么规律? 是按主键ASC还是什么?
作者: 冯.于安 发布时间: 2011-06-28
貌似这样改的话,逻辑性就发生改变了
LEFT JOIN 里的条件不成立的话,会返回字段全 NULL 的行
而将外联表的条件至于 WHERE 中,将不返回任何不符合条件的行
这样的话,感觉两者的性能就不具备可比性了。
感觉这么改的话,不如使用内联,理论上性能应该比外联更高
不过以前我测试过,内外联在大多数情况下,性能并没有特别显著差异
貌似不同的表引擎在不给定 ORDER BY 的时候,行为是不可测的
MyISAM不好说,因为很久不用了,据我自己的经验来看,InnoDB 默认会按照索引记录顺序返回
一般而言 InnoDB 默认是按主键的正序返回,但是印象中在删除中间行并再次插入的话,这样再查询所得到的结果顺序就会有一定混乱。不过我并没有就此做过专门研究,只是印象中以前遇到过此类排序故障,显式加了 ORDER BY 后解决,于是仅供参考。
阐述若有不周望指正。
LEFT JOIN 里的条件不成立的话,会返回字段全 NULL 的行
而将外联表的条件至于 WHERE 中,将不返回任何不符合条件的行
这样的话,感觉两者的性能就不具备可比性了。
感觉这么改的话,不如使用内联,理论上性能应该比外联更高
不过以前我测试过,内外联在大多数情况下,性能并没有特别显著差异
貌似不同的表引擎在不给定 ORDER BY 的时候,行为是不可测的
MyISAM不好说,因为很久不用了,据我自己的经验来看,InnoDB 默认会按照索引记录顺序返回
一般而言 InnoDB 默认是按主键的正序返回,但是印象中在删除中间行并再次插入的话,这样再查询所得到的结果顺序就会有一定混乱。不过我并没有就此做过专门研究,只是印象中以前遇到过此类排序故障,显式加了 ORDER BY 后解决,于是仅供参考。
阐述若有不周望指正。
作者: 路游宝宝 发布时间: 2011-06-28
ON 条件理解为 与所选信息符合的资源,
where 条件理解为, 所选信息的过滤条件.
发现where 即可条件a表, 也可条件b表.
路游宝宝 儿童节好.
where 条件理解为, 所选信息的过滤条件.
发现where 即可条件a表, 也可条件b表.
路游宝宝 儿童节好.
作者: 冯.于安 发布时间: 2011-06-28
最近被误导了, 原以为在未用ORDER BY时, 默认是用主键来排序.可事实上不是, 规律很难理清.
比如有些主键是md5() 唯一值时, 我们就很清楚知道, 排序问题了.
比如有些主键是md5() 唯一值时, 我们就很清楚知道, 排序问题了.
作者: 冯.于安 发布时间: 2011-06-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28