亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
請教個(gè)簡單問題
[打印本頁]
作者:
cxt442
時(shí)間:
2010-12-30 14:14
標(biāo)題:
請教個(gè)簡單問題
SQL就是個(gè):update A SET A.COL1 = (SELECT B.COL1 FROM B WHERE A.ID=B.ID) WHERE EXISTS(SELECT 1 FROM B WHERE A.ID=B.ID)
A,B表中id都是唯一索引
A中的數(shù)據(jù)有20w條件,B中的數(shù)據(jù)10條左右
但是更新的時(shí)候,數(shù)據(jù)庫只利用了B的索引,無法利用A的索引
怎么寫才能利用上A的索引
作者:
doni
時(shí)間:
2010-12-30 14:20
如果b.id是PK或unique的話,可以這樣:
update
(select a.col1 ac, b.col1 bc
from a, b
where a.id = b.id)
set ac = bc;
作者:
cxt442
時(shí)間:
2010-12-30 14:23
非常感謝,我試一下
作者:
cxt442
時(shí)間:
2010-12-30 14:41
能說一下以前的寫法哪里不合適嗎,因?yàn)槌绦蚶镉玫給racle數(shù)據(jù)庫update更新的地方都這么寫的,不知道具體什么原因造成利用不上A表索引,改變寫法影響很大
作者:
doni
時(shí)間:
2010-12-30 14:52
本帖最后由 doni 于 2010-12-30 14:55 編輯
首先,update ... where exists 這樣是不會用索引的
其次,A表不走索引基本上也沒什么問題,因?yàn)檫@個(gè)update可能會命中大部row,所以沒有必要用索引
如果,A表中會被update的row很少的話,就要考慮用我前面給出的SQL
作者:
cxt442
時(shí)間:
2010-12-30 15:29
非常感謝耐心解答
作者:
renxiao2003
時(shí)間:
2010-12-30 23:09
好復(fù)雜啊。呵呵。
歡迎光臨 Chinaunix (http://72891.cn/)
Powered by Discuz! X3.2