「MYINDEX」というインデックスを持つテーブル「table2」があります。
私の質問は、次のように結合にこのインデックスを使用する場合です。
select a from table1 left join table2 use index (MYINDEX)
次のクエリと同等ですか?
select a from table1 left join table2 use index (myindex)
MySQL では、サーバー OS と mysqld オプションによっては、データベース名とテーブル名で大文字と小文字が区別される場合があります。列、インデックス、ストアド ルーチン、およびイベントの名前は、常に大文字と小文字が区別されません。MySQL のドキュメントを参照してください
私の以前の投稿の 1 つに従って、Linux と Windows では、両方のオペレーティング システムがテーブル名を格納する方法 (小文字のみを許可するかどうか) に違いがあります。lower_case_table_names
これは、システム変数によって制御できます。Windows インストールでは、おそらくこの値が 1 に設定されており、Linux サーバーではこの値が 0 に設定されています。ユーザー マニュアルの「識別子の大文字と小文字の区別」の部分に従って、2 つのオプションがあります。
すべてのシステムで使用
lower_case_table_names=1
します。これの主な欠点は、SHOW TABLES
またはを使用するSHOW DATABASES
と、名前が元の大文字小文字で表示されないことです。
また
lower_case_table_names=0
Unix およびlower_case_table_names=2
Windows で使用します。これにより、データベース名とテーブル名の大文字と小文字が保持されます。これの欠点は、Windows では、ステートメントがデータベース名とテーブル名を常に正しい文字で参照するようにしなければならないことです。大文字と小文字が重要な Unix にステートメントを転送する場合、大文字と小文字が正しくないと機能しません。
インデックス名については、データベース名、テーブル名、および/または列名と同じ方法でアプローチします。安全を期すために、将来この問題が発生する可能性があると想定してください。
いくつかのリンク: