SQLなら俺に訊け [無断転載禁止]©2ch.net (457レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
390
(1): デフォルトの名無しさん [sage] 2025/01/21(火) 11:15:04.33 ID:+xYYoS0+(1/2) AAS
>>389
DBの構成上、主キーであれば最低限1つのインデックスは張られる
それはPK1,PK2,PK3全部揃ったときにB木を辿れればいいだけなので、6(=3P3)通りのどれかだが、
何もなければ PK1->PK2->PK3 の1つのインデックスになる
この場合、PK1,PK2 のセットならインデックスが使えるが、今回のように PK2, Pk3 のセットだと使えない
これはクエリプランを見れば判断出来る

SQLiteだとこのケースでは上記の通り
というかCREATE INDEX時(CREATE TABLE時)に使われ方を予測する事は不可能なので、
DBとしては、記述通りPK1->PK2->PK3で一つ作るか、全組み合わせを作っておくかしか出来ない
よく使われる検索に対して自動的にインデックスを作成して高速化してくれるDBがあるのかもしれんが俺は知らん
399
(1): 警備員[Lv.3][新芽] [sage] 2025/01/22(水) 01:45:12.43 ID:x9n06qn/(1/2) AAS
>>390
>>397
ありがとうございます
最左のカラムを検索キーとするかがポイントなんですね

当初は>>390での指摘がピンときていませんでした
合間のレスで「仮に(PK1,PK3)で検索し」は迂闊でした
いまは手元に試験用のコードがありませんが、最左のカラムを含んでいなかったと思います

SQLをずいぶん自由に書けるようになったと思っていましたが、テーブル、インデックスの作成がこんなに大切だったと知りました…
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.034s