はじめに
コジマです。
暗黙的型変換というものについて簡単にお話ししたいと思います。
暗黙的型変換ってなに?
違う型を比べたり、INSERT、UPDATEしようとしたときに、
データベース側で勝手に型合わせといてくれる機能のことを言います。
SQL Serverの場合、以下の表で●がついているものは暗黙的型変換の対象となります。
データ型の変換 (データベース エンジン)
より引用
暗黙的型変換をすると何か良くないことがある?
まず、暗黙的型変換をするとインデックスが効かなくなり、パフォーマンスが低下する可能性があります。
ゴリゴリ型変換しなきゃいけないような設計なんてほんとはいけないわけでありますが、
長いこと積み重なった政治的な理由により余儀なくされることがあります。
自分の作ったSQLが暗黙的型変換をしているかどうかは
SSMSやAzure Data StudioのExplain機能を使用して吐き出されたXMLを見ればわかります。
「COMVERT_IMPLICIT」という文言が吐き出されていたら暗黙的型変換が存在します。
どうしても暗黙的型変換を解消しなければいけないときは
CASTやCONVERTを使用して明示的に型変換を行ってあげることが必要になります。
対応方法も単純なので、DBの性能問題が出てきたときには白羽の矢が立ちやすいです。
さいごに
ここでは暗黙的型変換について簡単にお話しました。
古い記事ですが、こちらの記事がとてもよくまとまっています。
SQL Server のチューニングについてまとめてみる – その6 – ( CONVERT_IMPLICIT、暗黙の型変換の怖さを知ろう )
この記事では暗黙的型変換についてこういうことなんだな~
ってのが分かっていただけたらうれしいです。
- 暗黙的型変換とは、DBがよしなに型を合わせてくれる機能のこと
- インデックスが効かなくなり、性能が落ちる原因となる
- CASTやCONVERTを使って型を明示的に合わせてあげよう
この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!
システムエンジニアのつらい部分のあるあるなんかをエンタメにしたチャンネルを作りました。
チャンネルはこちら
つらい部分も楽しくなればと思っているのでよかったらチャンネル登録や高評価してくれたらうれしいです。
以上、コジマでした。