SQL的下面很簡單的代碼片段失敗:MySQL的UPDATE語句超時
UPDATE smalltable,bigtable
SET smalltable.ssn=bigtable.ssn
WHERE smalltable.last = bigtable.last && smalltable.first = bigtable.first;
BigTable中有16000多條記錄 - 不是真的那麼大的SQL。小表大約有300個。出於某種原因,這個表述超時(> 30秒)。爲什麼?它看起來很簡單,並且數據不難處理:不是很多重複,短字段(VARCHAR(20))等等。
我做錯了什麼?我只是試圖用bigtable中的簡單(或我想)查找來更新smalltable中的記錄。
編輯:很可能相關:smalltable是一個LOCAL INFILE
。
你能張貼smalltable和BigTable中創建表?看起來你沒有連接列上的索引(第一個和最後一個)。 – a1ex07 2010-10-13 15:03:46
bigtable有很多不相關的記錄(總共175個),但關鍵的記錄是last和first,它們是VARCHAR(20)和ssn,它們是VARCHAR(16)。小桌子正是這三個領域。 – Charles 2010-10-13 15:07:43