SQLなら俺に訊け [無断転載禁止]©2ch.net (457レス)
SQLなら俺に訊け [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1499985653/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
389: 警備員[Lv.5][新芽] [sage] 2025/01/21(火) 09:13:36.90 ID:X3sBvw4I >>388 調べてみるとそうみたいなんだけど(主キーにはインデックスが張られる)、単一主キーだと、該当キーにRequired、Uniqueなインデックスが作成されるけど、複合主キーでは個々のフィールドに個別にはインデックスが作成されてなくて それがどういうことか(インデックスが張られているか)分からなくて 分かりにくくてごめんね http://mevius.5ch.net/test/read.cgi/tech/1499985653/389
390: デフォルトの名無しさん [sage] 2025/01/21(火) 11:15:04.33 ID:+xYYoS0+ >>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があるのかもしれんが俺は知らん http://mevius.5ch.net/test/read.cgi/tech/1499985653/390
391: デフォルトの名無しさん [sage] 2025/01/21(火) 11:23:25.76 ID:+xYYoS0+ >>389 > 単一主キーだと、該当キーにRequired、Uniqueなインデックスが作成されるけど、複合主キーでは個々のフィールドに個別にはインデックスが作成されてなくて これは少し勘違いしてる インデックスはあくまでB木であって、個々のフィールドやカラムとは全く別物 インデックスが当たってるかは、クエリプランで確認すべき事 http://mevius.5ch.net/test/read.cgi/tech/1499985653/391
392: 警備員[Lv.7][新芽] [sage] 2025/01/21(火) 13:20:25.85 ID:j6Q/IyUA >>389です ありがとうございます (以下Accessです) 新たにテーブルに、主キー(PK1,PK2,PK3)を作成した段階で数万件のレコードを入れ、仮に(PK1,PK3)をキーとしてSELECTで抽出をするとめちゃくちゃ遅い…(1) 上のテーブルの主キーの個々のフィールド(3つ)にインデックスを設定して(1)と同じ条件の抽出をするとかなり速い…(2) (2)のインデックスを削除して主キーと同じフィールドに複合インデックスを設定するともっと速い…(3) (1):(2):(3)=65:1.5:1 くらいの比率でした 主キーを設定しただけではとても遅かったです(65倍) なにか設定・前提に誤りがあるかもしれません http://mevius.5ch.net/test/read.cgi/tech/1499985653/392
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.026s