sql >> データベース >  >> RDS >> Mysql

MySQLで比較する場合、varcharまたはvarcharからintに変換する方が高速ですか?

    それはインデックスに依存します。両方の列にインデックスが設定されている場合は、intにキャストする必要があります 、4バイトを比較するだけでよいためです。ただし、varcharのみの場合 列にインデックスが付けられ、varcharにキャストされます 。

    最後に、クエリをexplainする必要があります ed、どのインデックスが使用されているかを確認し、それに応じてキャストします。

    インデックスが設定されていない場合は、intにキャストします 一般的にはより良いアプローチです。ただし、インデックスが設定されていない場合は、実際には問題ではありません。正しいキャスト方法を選択するよりも、インデックスを作成する方がはるかに時間を節約できます。ただし、ここでもテーブルは小さいです。そうすれば、それも問題ではありません。

    実際、比較のコストだけでなく、キャストのコストも考慮する必要があります。intのキャスト varcharvarcharを解析するよりもわずかに高速です intに 。ただし、少なくとも4文字のvarcharを比較すると、その利点は役に立たなくなります。値が999を超える傾向がある場合は、intにキャストします より速くなります。ただし、これはオペレーティングシステム、アーキテクチャ、mysqlバイナリで使用される命令セットなどによって異なります。本当に信頼できる答えを得る唯一の方法は、ターゲットマシンでその状況をベンチマークすることです。




    1. PHPのMySql応答からリソースID#6をエコーするにはどうすればよいですか?

    2. DATETIME列のランダム値

    3. データベース(MySQL)が存在するかどうかを確認し、存在しない場合はPHPで作成します

    4. 順序付きリストをデータベースに保存する最良の方法は?