私は、同じ結果をもたらすマイクロソフトのアクセスで次の2つのクエリを実行していますが、最初のクエリは約10分かかりますが、2番目のクエリは約5秒で実行されます。私はここで完全に失われている。最初のクエリは別の整数フィールドの整数フィールドを結合し、2番目のクエリはcint(text)
フィールドを整数フィールドに結合し、より高速に実行されます。 10分でなぜintフィールドのjoin Cint(charフィールド)がintよりもintに高速ですか?
実行します:
私はtblA.number =整数フィールドに5秒で
SELECT A, B, sum(d) as C
FROM tblA
INNER JOIN (tblB INNER JOIN tblC ON tblB.A = tblC.A)
ON tblA.number = tbl B.B)
GROUP BY A, B
HAVING F like '*808*'
ランを設定します - これは正常な状況ではないcint(tblA.A)
I set tblA.number = text field
SELECT A, B, sum(d) as C
FROM tblA
INNER JOIN (tblB INNER JOIN tblC ON tblB.A = tblC.A)
ON cint(tblA.number) = tbl B.B)
GROUP BY A, B
HAVING F like '*808*'
テストを繰り返しても、同様の結果が得られますか(1回限りの最適化コストはありません)? 'tblB'の定義は何ですか? –
最初のクエリであなたのtblA.numberが数字であることは確かですか? – wickedone
「HAVING A like」* 808 * '':この欄の列Aは、数字からテキストに変更するのと同じフィールドですか? – mwolfe02