[過去ログ] スレ立てるまでもない質問はここで 165匹目 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
309: デフォルトの名無しさん (オイコラミネオ MM2b-FJ+M) [sage] 2023/12/10(日) 10:57:51.63 ID:o2TNvwaPM(1/3) AAS
SQLITEなどのDBMSで、2つ以上のカラムに
まとめてindex (B-Tree)を用意するところの
「Multicolumn indexes(Composite indexes)」
を用いる場合、select の where 節で
2つのカラムa, b に対して、
where a=値1 and b=値2
とした場合、高速化されるそうです。
しかし、b については条件を指定せずに
where a=値1
とだけ書いた場合や、
a については条件を指定せずに
where b=値2
とだけ書いた場合の速度も高速化されますか?
312
(2): デフォルトの名無しさん (オイコラミネオ MM2b-FJ+M) [sage] 2023/12/10(日) 12:13:10.46 ID:o2TNvwaPM(2/3) AAS
>>1
1(1): デフォルトの名無しさん (ワッチョイ 9bac-kina) [sage] 2023/06/20(火) 20:24:27.69 ID:Eu3jcPcB0(1) AAS
この板はプログラムを作る人のための板です。
あらゆる質問はまず
スレ立てるまでもない質問はここで
スレにしてください。

次スレは>>980が立てること

【前スレ

スレ立てるまでもない質問はここで 164匹目
2chスレ:tech VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
`where b=値2`
の条件だけ書いた場合になぜ高速化されるか
について、もう少し詳しくお願いできませんか。
2文字のひらがなの辞書で考えて、
1文字目をa, 2文字目をb として、
ああ
あい
あう
いあ
いい
いう
のようにならびますが、b=いを検索したい
場合、1文字目が あい と、いい の2か所
に分かれて格納されてしまい、B-Treeだと
全く別の場所になってしまいそうですが。
313
(1): デフォルトの名無しさん (オイコラミネオ MM2b-FJ+M) [sage] 2023/12/10(日) 12:18:53.28 ID:o2TNvwaPM(3/3) AAS
>>312
まず、複合カラムでない場合に限定すれば、
N文字のキーが入っている B-Treeの場合、
深さは、大体 O(log(N))になります。
検索する際、どのあたりにキーがあるかは、
一意的に深い方向に探索をすれば済むので、
大体、O(log(N)) 回程度に「進めれば」検索が
終了できます。
しかし、複合カラムの場合、条件にaを指定せずに
bだけを指定した場合、
キーは、様々な場所に分散されて格納されます
ので、この例のひらがな50音の辞書の場合なら
50か所に分かれてしまうため、
log(N) * 50 回程度の時間がかかってしまうのでは
ないでしょうか。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.030s