SQLなら俺に訊け [無断転載禁止]©2ch.net (457レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
156: デフォルトの名無しさん [sage] 2021/12/24(金) 17:59:49.49 ID:cMhJNtck(1/2) AAS
CASE式使えばできるよ
アプリかDBの設計を見直したほうがいい可能性大
160(1): デフォルトの名無しさん [sage] 2021/12/24(金) 21:37:57.02 ID:cMhJNtck(2/2) AAS
>>157157(1): デフォルトの名無しさん [sage] 2021/12/24(金) 19:31:42.64 ID:unjC7EWw(2/5) AAS
お早い回答ありがとう。
もっと色々試すが取り急ぎ。
新案1:
SELECT CASE WHEN col0 LIKE 'str' THEN 0 WHEN col1 LIKE 'str' THEN 1 ELSE -1 END AS col,target FROM sometable WHERE col>=0;
explainでは32、他だと文法エラーらしいがSQLiteだと通る。(参考 外部リンク:rainbow-engine.com
explain query plan では
0|0|0|SCAN TABLE tags_bulk VIRTUAL TABLE INDEX 0:
新案2:
SELECT col,target FROM (SELECT CASE WHEN col0 LIKE 'str' THEN 0 WHEN col1 LIKE 'str' THEN 1 ELSE -1 END AS col,* FROM sometable) WHERE col>=0;
他ではこう書けと言われているもの。
explainでは32で、見た目中身も同じ。explain query plan も全く同じ。
その案はどちらもテーブルスキャンになってインデックス使わない
SELECT句のCASE式とは別にWHERE句に本来の条件を書く
DB構造の話はカラムとして持つべきデータじゃなくて
子テーブルの行として持つべきデータかと思ったんだけど
全文検索でいずれかのカラムに検索キーワードが含まれてる行を
どのカラムかという情報も含めて抽出する用途なんであれば
そのままでいいんじゃないかと思う
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.028s