首页 新闻 赞助 找找看

mysql 执行效率的问题,

0
悬赏园豆:10 [已解决问题] 解决于 2018-09-17 21:18

SELECT t1.* FROM
bc_barcode_details AS t1
INNER JOIN
bc_barcode_details AS t2
ON t1.`BarcodeID` = t2.`BarcodeID` AND t1.`BarcodePageIndex` != t2.`BarcodePageIndex`
AND t1.`PageStatus` != t2.`PageStatus`


SELECT t1.* FROM
(SELECT * FROM bc_barcode_details) AS t1
INNER JOIN
(SELECT * FROM bc_barcode_details) AS t2
ON t1.`BarcodeID` = t2.`BarcodeID` AND t1.`BarcodePageIndex` != t2.`BarcodePageIndex`
AND t1.`PageStatus` != t2.`PageStatus`

第一个SQL语句执行的时间比第二个多的太多了,求下原理,为什么,怎么做

第一个sql语句执行3分多,第二个2秒

mikefts的主页 mikefts | 初学一级 | 园豆:95
提问于:2016-07-09 11:10
< >
分享
最佳答案
0

就是为了得到数据表【bc_barcode_details】中存在两条及以上字段【BarcodePageIndex】或者【PageStatus】不相同的数据。

!= 相当于全表扫描 ,第二种写法应该是载入缓存了,只进行了一次物理读,其他的都是逻辑读。

这个可以用健康恐惧看看执行计划就知道了。

收获园豆:10
| 小虾三级 |园豆:780 | 2016-07-09 13:37
其他回答(1)
0

请问楼主这个语句是要得到什么结果?

筱恕 | 园豆:196 (初学一级) | 2016-07-09 13:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册