0

要約すると、bigint の代わりに varchar のわずかなパフォーマンスの向上です。

たとえば、次のような2つのテーブルがあります

アイテム

ID bigint PK;
item_code varchar(256);

セールスアイテム

ID bigint PK;
item_id varchar(256);

は外部キーではないことに注意してください。item_idいくつかの特殊なケースにより、外部キーitem_idになることが許可されていますvarchar(256)

私はこのようなSQL文を試しました

Select SalesItem.item_id
from SalesItem
left join Item on SalesItem.item_id = Item.id

これにより、SQL Server が varchar を int に変換しようとする暗黙の変換が発生し、パフォーマンスが最悪になります。

どういうわけか、SQLを以下に変更しました:

Select SalesItem.item_id
from SalesItem
left join Item on SalesItem.item_id = convert(varchar(256), Item.id)

パフォーマンスは抜群で、70% ~ 80% 近く低下しています。

ちょっと気になるのは、「ON」の問題のシーケンスですか?そして、私はそれを変換する必要がありますか?

onに変換する代わりに、varchar(256)onに変換したitem.idほうがよいですか?bigintsalesitem.item_id

例:

Select SalesItem.item_id
from SalesItem
left join Item on Item.id = convert(bigint, SalesItem.item_id)

上記のSQLは単なるサンプルであることに注意してください。

4

1 に答える 1