SQLなら俺に訊け [無断転載禁止]©2ch.net (457レス)
SQLなら俺に訊け [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1499985653/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
157: デフォルトの名無しさん [sage] 2021/12/24(金) 19:31:42.64 ID:unjC7EWw お早い回答ありがとう。 もっと色々試すが取り急ぎ。 新案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だと通る。(参考 https://rainbow-engine.com/sql-howto-caseresult-where/) 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 も全く同じ。 http://mevius.5ch.net/test/read.cgi/tech/1499985653/157
160: デフォルトの名無しさん [sage] 2021/12/24(金) 21:37:57.02 ID:cMhJNtck >>157 その案はどちらもテーブルスキャンになってインデックス使わない SELECT句のCASE式とは別にWHERE句に本来の条件を書く DB構造の話はカラムとして持つべきデータじゃなくて 子テーブルの行として持つべきデータかと思ったんだけど 全文検索でいずれかのカラムに検索キーワードが含まれてる行を どのカラムかという情報も含めて抽出する用途なんであれば そのままでいいんじゃないかと思う http://mevius.5ch.net/test/read.cgi/tech/1499985653/160
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.036s