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秒
就是为了得到数据表【bc_barcode_details】中存在两条及以上字段【BarcodePageIndex】或者【PageStatus】不相同的数据。
!= 相当于全表扫描 ,第二种写法应该是载入缓存了,只进行了一次物理读,其他的都是逻辑读。
这个可以用健康恐惧看看执行计划就知道了。
请问楼主这个语句是要得到什么结果?