SELECT id FROM mytable WHERE login = 'Jhon' AND password = '123'
列login
には、インデックス付けされていない一意のインデックスがpassword
あります。
最初の結果を見つけた後、mysqlは実行を停止しますか?
SELECT id FROM mytable WHERE login = 'Jhon' AND password = '123'
列login
には、インデックス付けされていない一意のインデックスがpassword
あります。
最初の結果を見つけた後、mysqlは実行を停止しますか?
SELECT id FROM mytable WHERE login = 'Jhon' AND password = '123'
UNIQUE CONSTRAINT / INDEXでフィルタリングしているので、制限は必要ありません。
余談ですが、プレーンテキストのパスワードをデータベースに保存しないでください。
ログインが一意のインデックスである場合、クエリは「Jhon」が見つかるとインデックスbツリーの検索を停止します。ログインとパスワードの2つの条件があるため、クエリプランの最適化の誤りを回避するために(技術的に不可能なはずの)ログインインデックスを使用するようにMySQLにヒントを与えることができます。
SELECT id FROM mytable USE INDEX(login) WHERE login = 'Jhon' AND password = '123'
SELECT id FROM mytable FORCE INDEX(login) WHERE login = 'Jhon' AND password = '123'