[解決済み] WHERE x IN (5) vs WHERE x = 5 ...なぜINを使うのか?
2022-01-26 14:47:36
質問
最近、INを不適切に使っている人がいるような気がします。もしかして、スピードが上がるとか、何かコツがあるのでしょうか?
このクエリ
SELECT * FROM pages WHERE is_visible IN ($visibility)
なぜそれを使うのか?なぜダメなんだ
SELECT * FROM pages WHERE is_visible = $visibility
もちろん、これだったらね。
SELECT * FROM pages WHERE is_visible
IN ($visibility,$invisibility,$somethingelse)
次に
WHERE x IN (1,2,3)
は、より良い代替案として
WHERE x = 1 OR x = 2 OR x = 3
ということですよね?でも確かにこれは
だけ
を使うべきシナリオなのでしょうか?
とにかくお時間をいただきありがとうございました!お返事お待ちしております。
解決方法は?
ここでは、パフォーマンスを上げるためのトリックはありませんが、パフォーマンスが低下することもないと思います。 ですから、どちらの方法でもOKです。 パラメータが1つしかないIN句を使うとおかしく見えるというのは同意しますが、それでも十分簡単です。
おそらく開発者が、将来的に複数の値が許される可能性が高い(こうすればクエリが変更されない)と考えているから起きるのだと思います。 あるいは、開発者が複数の値が可能なシナリオに慣れていて、習慣的にそのように書いているだけかもしれません。
関連
-
[解決済み] SELECT DISTINCTを指定した場合、ORDER BY項目は必ず選択リストに表示されます。
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
-
[解決済み] 二重括弧、片括弧、中括弧の使い方
-
[解決済み] MySQLでシングルクォート、ダブルクォート、バックスティックを使用する場合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ERROR: 参照されたテーブル "bar" の与えられたキーに一致するユニークな制約がありません。
-
[解決済み】PL/SQL SELECTに複数のCOUNT(DISTINCT xxx)を指定すると、予期しない結果になる。
-
[解決済み] varchar 値 'simple, ' をデータ型 int に変換する際に変換に失敗しました。
-
[解決済み】テキストが切り捨てられた、または1つ以上の文字がターゲットコードページで一致しない アンピボットの主キーを含む
-
[解決済み】SQL Server サブクエリが1つ以上の値を返しました。サブクエリが =, !=, <, <= , >, >= に続く場合、これは許可されません。
-
[解決済み】ORA-01791: SELECTされた式ではない
-
[解決済み] SELECT DISTINCTを指定した場合、ORDER BY項目は必ず選択リストに表示されます。
-
[解決済み] "このSqlTransactionは完了しました。もう使用できません。"...設定エラー?
-
[解決済み] ORA-01821: ISO 8601 のローカルタイム付き日付のフォーマットが認識されないエラー
-
[解決済み] 時間を時間単位や10分単位でグループ化する方法