2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

インデックスはどこに貼るべきか?

1 :NAME IS NULL:2006/06/20(火) 11:28:32 ID:???.net
無知な私に教えてくださいm(_ _)m
Where文でよく使う項目にインデックスを貼っていたのですが
ググったりして探してみるとどうも違うようですが、みんな曖昧な言いまわしで
よくわかりません。
たとえば、PostgreSQLで以下のようなテーブルがあるとします。
---------------------------
SNO          NUMERIC(8) [PRIMARY KEY]
NAME         VARCHAR(100)
SEX           NUMERIC(1) -- 0:男、1:女
---------------------------
SNOは通し番号でPRIMARY KEYなのでインデックスが貼られますが
クエリー発行時に「where SEX = 1 」とよく利用する場合にSEXにはインデックスを
貼るべきなのか貼らないべきなのかが分かりません。

2 :1:2006/06/20(火) 11:31:40 ID:???.net
試しに二つのテーブルを用意して実験してみました。
--テーブル1
create table test1(
sno serial not null,
name varchar(100),
sex numeric(2),
primary key(sno)
);

--テーブル2
create table test2(
sno serial not null,
name varchar(100),
sex numeric(2),
primary key(sno)
);

create index test2_indexA1
on test2
(sex);

この二つのテーブルにまったく同じデータを10個ほど入れて
・explain select * from test1 where sex = 1 ;
・explain select * from test2 where sex = 1 ;
を実行してみました。

test1のほうは
Seq Scan on test1 (cost=0.00..22.50 rows=5 width=183)
Filter: (sex = 1::numeric)
という結果でした。

test2のほうは
Index Scan using test2_indexa1 on test2 (cost=0.00..17.07 rows=5 width=183)
Index Cond: (sex = 1::numeric)
という結果でした。

データ数も少ないのでコストはあまり変わりませんがusing indexと出てるのでtest2のほうが
インデックスが使われています。ということはやはりよく検索する項目にはインデックスを張るべきなのでしょうか??


3 :NAME IS NULL:2006/06/20(火) 12:19:13 ID:???.net

  ( ゚д゚)
_(__つ/ ̄ ̄ ̄/_
  \/    /

    _, ._
  ( ゚ Д゚)
_(__つ/ ̄ ̄ ̄/_
  \/    /


 ( ゚д゚)
_(__つ/ ̄ ̄ ̄/_
  \/    /

    _, ._
  (;゚ Д゚)
_(__つ/ ̄ ̄ ̄/_
  \/    /


  (゚д゚ )
_(__つ/ ̄ ̄ ̄/_
  \/    /


 (д゚ )
_(__つ/ ̄ ̄ ̄/_
  \/    /

4 :NAME IS NULL:2006/06/20(火) 12:53:47 ID:QOvjXAXI.net
判らなきゃ聞かずに勉強しろ。
このあたりはSQL知ってるレベルから、DB使えるってレベルへの大事な部分だ。

5 :U ◆CZtFsGiu0c :2006/06/20(火) 16:23:53 ID:???.net
Postgresってコストベースでしょ?
たかだかデータ10件でインデックススキャンを選択するオプティマイザ
って信用できるのだろうか。

それはともかく、

>クエリー発行時に「where SEX = 1 」とよく利用する場合にSEXにはインデックスを
貼るべきなのか貼らないべきなのかが分かりません。

SEXって男性、女性(+NULL?)しかないわけでしょ? そのフィールドに
インデックス貼って本当に効率がどこまで上がるのかな? それから、
>>4も書いているとおりそんな単純な問題ではないから、基礎から
勉強しましょう。
#まあプランを検証しているだけマシか…

6 :NAME IS NULL:2006/06/21(水) 15:20:04 ID:???.net
いや、単発質問スレ立ててる時点で勉強しても許しがたい

7 :NAME IS NULL:2006/06/22(木) 09:36:01 ID:???.net
お尻に張ってください

8 :NAME IS NULL:2006/06/22(木) 13:05:59 ID:IC52MLFC.net
尻でもSEXでもいいが、張って高速化できるんなら張れば。
ちなみにDBMSやindexの種類にもよるが、値の分布が少ない場合はあんまり効果無いぞ。
場合によっちゃ、張っても全スキャンの方が速いと判断して使ってくれない場合もある。

9 :NAME IS NULL:2006/06/22(木) 17:17:28 ID:???.net
昔は、使ってくれないだけならまだしも、使った上に全件より遅くなったりしたもんだ。
今でもそういうDBMSあるだろね。

10 :NAME IS NULL:2006/06/25(日) 16:34:46 ID:xGXxj73z.net
SEXの値のデータ分布が 1 対 1 なら、あまり意味が無い
男(0):女(1)=9:1なんかで SEX = 1 という検索を行う必要があれば、インデックスを張る価値があるよ
この場合、SEX = 0 の検索では効果はないけどね

と経験上の話を書いたけど、残念ながら Oracle(たしか8iくらい?) は SEX = 1 のような検索でも
インデックスは使ってくれなかった。
入力された検索条件をユーザープログラム側で解析して、SEX = 1 となるような
検索になるときは、ヒントでインデックスを使うように指示した記憶がある。
ある特殊な検索だったんだけど、結果を出すのに数十秒かかってた処理が
一瞬で返るようになってビックリした。

結局、その検索条件でデータをガッツリ絞り込めることが保証されるなら
インデックスを張るべきだね。

11 :NAME IS NULL:2006/06/25(日) 16:43:07 ID:???.net
まぁ、列のカーディナリティが低いなら、ビットマップインデックスはるか、
パーティションテーブル使った方がいいかもな

12 :NAME IS NULL:2006/06/25(日) 20:11:03 ID:???.net
男と女のデータの数が1:1でも
インデックスを使うとデータは半分になるわけだが。

13 :NAME IS NULL:2006/06/26(月) 00:26:19 ID:???.net
>>12
ほぅ・・・
100万件登録されているテーブルで50万件をインデックスにより特定して全スキャンさせるのか?
データ分布が1対1で、レコードをある程度絞り込めるならインデックスを使う必要はないだろ。

>>10の考え方は、インデックスをインデックスらしく使うのではなく
インデックスを介して、そのノードが保持するテーブル内に散乱したレコードの
行番号リストを得ることを目的としてるんだが。

14 :NAME IS NULL:2006/07/01(土) 23:02:23 ID:???.net
カーディナリティが低い場合はインデックスを忘れろ。

15 :NAME IS NULL:2006/07/06(木) 10:21:52 ID:vCGruU6t.net
> 100万件登録されているテーブルで50万件をインデックスにより特定して全スキャンさせるのか?
100万件全スキャンさせるのよりも、50万件全スキャンさせるほうが
半分ですむ。

16 :NAME IS NULL:2006/07/06(木) 12:56:01 ID:4t2wzNRO.net
>>15
インデックスたぐるコストのほうが、べた舐めよりかかる。


17 :NAME IS NULL:2006/07/06(木) 16:47:53 ID:U1S8L1hg.net
多くの場合、インデックスは昇順でならんでいる。
だから最初と最後の位置を特定すれば、あとは舐めるだけと変わらない。
データが少ない場合は、最初と最後の位置を特定するコストに相殺されるが、
データが多くなると、スキャンする範囲が狭くなるので有効。


18 :NAME IS NULL:2006/07/06(木) 22:59:18 ID:???.net
それはindexのリーフに必要なデータが揃っている場合だけな。

select SEX from TABLE where SEX=1



19 :NAME IS NULL:2006/07/07(金) 09:08:47 ID:+t31RxJ2.net
だーね、SQL鯖でいうクラスタ化インデックスって場合。


20 :NAME IS NULL:2006/07/09(日) 16:29:41 ID:???.net
せめて column 名は GENDER にしないか。


21 :NAME IS NULL:2006/07/09(日) 20:28:12 ID:???.net
>>20
甘いな・・・
若手女プログラマに列名を言わせるのが楽しいんだろ
顔真っ赤にして言われると、こっちも苦笑いするしか無いがな

30過ぎの負け犬だと躊躇することなく列名を発するからツマラン

22 :1:2006/07/25(火) 16:04:37 ID:???.net
皆さん!レスありがとうございます。
B-TREEの基礎から勉強してきました。インデックスとは何かが良くわかりました。
奥が深くて回答しづらいのも良くわかりました。こんなスレたててすみませんでした。

23 :NAME IS NULL:2007/01/27(土) 07:42:17 ID:8mHye8uN.net
オカマの思う壺
ttp://megabbs.com/pickles/index.html

24 :NAME IS NULL:2007/01/27(土) 10:46:22 ID:O+RfWf9V.net
>>22
んでどういう見解に至ったか説明せい。
カーディナリティという言葉を含めて。

25 :NAME IS NULL:2007/02/01(木) 12:23:54 ID:???.net
なにげに良スレ化。

26 :NAME IS NULL:2007/02/12(月) 12:58:20 ID:/s74tiRC.net
ほしゅ

27 :NAME IS NULL:2007/02/14(水) 09:39:15 ID:???.net
インサートとかセックスとか、童貞にはハァハァ対象だな。

28 :NAME IS NULL:2008/10/30(木) 11:31:29 ID:???.net
インデックスたん(;´Д`)ハァハァ

29 :NAME IS NULL:2008/11/11(火) 22:48:21 ID:???.net
>>25
できるよ。
以上。
はい次の方。

30 :NAME IS NULL:2009/04/06(月) 09:50:39 ID:gtB4cOSs.net
ソートで使う列(値はバラバラ)に
インデックスは効果ありますか?

31 :NAME IS NULL:2009/04/11(土) 20:01:58 ID:691PehwU.net
>>30
意味はあるよ。
でもバラバラにインデックスを定義するよりも、複合インデックスにした方が効果的なのは言うまでもない。


32 :NAME IS NULL:2009/04/11(土) 20:10:45 ID:691PehwU.net
>>10
Oracle8iのオプティマイザは糞だからな。
統計情報を採取した後に、急激にパフォーマンスが悪くなるなんてこともあった。
現在のバージョンのオプティマイザは優秀になったが。

Oracle10gや11gは、カーディナリティが低いSEXのインデックスでも使用してくれるだろう。
だが1つだけ注意しないといけないことがあってな。
それはSEXの抽出条件にバインド変数を使用してしまうと、
女で抽出する場合と男で抽出する場合でも、同じ実行計画を組み立ててしまうということ。

だから、オマイの案のようなそういう特殊条件をやる場合は、
SEXの抽出条件にバインド変数を利用しないようにしないと問題が発生するだろう。


33 :NAME IS NULL:2009/04/11(土) 20:13:26 ID:691PehwU.net
やべ、3年前のレスに返信してしもうたわw
ハズカシー (/ω\)


34 :NAME IS NULL:2009/04/13(月) 13:05:07 ID:???.net
 x‐‐―…―‐--x
人人        \
   (ー:‐:‐:‐:‐:‐:‐:‐:i ヽ
 マ (_________!  !
 ジ (ノへハノハノィi::i::ハ !
 で (r心`   r心ヘ::l::!|
  っ(弋ソ  弋ソ}ノ::N.|
 !? (:::ー''/\ー'::Y:::|  て
::ハ⌒i u \/  .イ:|:|  (
`ヽ::i:|\`  7{ ノ:|::!:! |

35 :NAME IS NULL:2009/06/17(水) 23:31:00 ID:fu0ZnfDa.net
ビットマップはテーブルの目的によっちゃ使わないほうが良い事もある。

トランザクション系なら避けたほうがいい。

おいらは本番で痛い目を見た......


36 :NAME IS NULL:2009/08/27(木) 00:10:55 ID:vGxTqY7s.net
MySQL5.x系を使っているのですが、どうも件数が遅くなりそうで心配です。

簡単に言うと、名簿を作っているのですが、
'部' '課' '係' というカラムで個人情報があって、それに対して、

( 部1 = 部2 and 課1 = null and 係1 = null ) or
( 部1 = 部2 and 課1 = 課2 and 係1 = null ) or
( 部1 = 部2 and 課1 = 課2 and 係1 = 課2l ) or

というマッチングを頻繁にやってます。

この場合、部、課、係の複合インデックスのほかに、部、課、係それぞれの
インデックスを作ることは効果あるでしょうか?



37 :NAME IS NULL:2009/08/27(木) 14:28:08 ID:???.net
エンジンによっても違うらしいから
explainしてみるか実測してみたら?

38 :NAME IS NULL:2009/08/27(木) 20:54:57 ID:???.net
やっぱり個別インデックスをつけた方が速かったです。
エンジンは、ISAMを使っています。

更新時に重くなければ、このままインデックスをつけて
やってみます。混雑時じゃないと実測できないけど・・・。

39 :NAME IS NULL:2009/12/01(火) 01:36:35 ID:???.net
              _.. -――- ._
            ./ ,―――‐- .._` .、
        x   /  ./  / /    ``\.  +
           /_.. ィ7T.フ厂 ̄`フi ‐- ._ |〉     x
       .x    !  ̄フ/l/_×// |ハハl .ト、  x
    |! /    |  /|,イ._T_i`   .r≦lハ!|``   +
    ll/_     .|  | |'弋..!ノ     i'+!l |
   / ミr`!   /   l |' ' '  ,‐- ..__゙ー' .!l .|
   ト、ソ .! ./   .,!l .ト、  l  `,!   .ハ.! 
   /ll\ `テヽ、 /_,| |l: > .ヽ.. ィ <l   l|
  ./' l|/l. >' / /\. | | \ \ー'/ ./ ,,;:`:;'゙"r;:゙c
  '  l|l l/ ./ /    | |  _\_×_/.ィ'...二二二l ヽ
     | ヽ./ /   /|.|i彡_           \\
     | //  ./ .l|| ´   ̄,「 ̄ 「 li ̄二ニ -'´ ヽ.
    └――'"l// .|!   / / ! .| |' |l //
         / __l_/_/__.|__|__l_`_ー_'_____./


40 :南沢木綿子 ◆qdIdLOElrVy2 :2010/09/08(水) 10:12:20 ID:???.net
  ∧,,,∧ 
 (  ・∀・) ほー それで
  (  : ) 
  し─J


41 : 【38.6m】 電脳プリオン:2012/05/26(土) 14:48:22.22 ID:???.net ?PLT(12079)
>>40

最近このコテよく見かける

42 :NAME IS NULL:2013/06/12(水) 19:30:30.22 ID:dhCfeG4A.net
お!今話題のスレタイ!

43 :NAME IS NULL:2013/06/21(金) 18:05:24.95 ID:???.net
最初か最後のページだな。

44 :NAME IS NULL:2013/08/11(日) NY:AN:NY.AN ID:???.net
痛いとこにでも貼っとけば良いんでない?

45 :NAME IS NULL:2015/01/03(土) 03:54:34.12 ID:???.net
第1章 赤・緑・青編             1巻〜3巻
第2章 イエロー編              4巻〜7巻
第3章 金・銀・クリスタル編        8巻〜15巻
第4章 ルビー・サファイア編        15巻〜22巻
第5章 ファイアレッド・リーフグリーン編 22巻〜26巻
第6章 エメラルド編             26巻〜29巻
第7章 ダイヤモンド・パール編      30巻〜38巻
第8章 プラチナ編              38巻〜40巻
第9章 ハートゴールド・ソウルシルバー編 41巻〜43巻
第10章 ブラック・ホワイト編        43巻〜51巻
第11章 ブラック2・ホワイト2編        52巻〜
第12章 エックス・ワイ編            XY編2巻〜

46 :NAME IS NULL:2015/01/14(水) 23:50:05.71 ID:lUEj13wDc
車用ピッキングツール 車の鍵を不正に開ける工具
http://www.amazon.co.jp/dp/B00RGI2EU8

47 :NAME IS NULL:2015/01/23(金) 00:48:08.85 ID:458VLz89.net


48 : ◆cqxclbaQk/hG :2015/02/01(日) 15:23:39.19 ID:???.net
最初に無があった
無から有が生まれた
これが全ての真理

49 :NAME IS NULL:2015/02/01(日) 16:41:47.17 ID:???.net
あそこ。

50 :NAME IS NULL:2015/02/10(火) 00:16:06.77 ID:???.net
http://jbbs.shitaraba.net/sports/42269/

51 :NAME IS NULL:2015/09/19(土) 02:46:04.98 ID:atvU/TBs.net
>>1
インデックスは作るもの。

52 :ギンコ ◆BonGinkoCc :2015/12/14(月) 20:18:32.99 ID:???.net
インデックスは、DATで言うと、スタートID、DVDやBDでいうとチャプターに該当する。

スタートIDやチャプターを任意の場所に振っておくと、録音後や録画後に後から簡単に探し出せますよね。
インデックスを降っていないファイルの場合は、シーケンシャルアクセスを行い、目的のデータが見つかるまで
順番にたどり着くしか方法が無い。

53 :NAME IS NULL:2015/12/14(月) 23:00:31.65 ID:3cSRdEx7.net
>>52
かなり違うが?

54 :http://goo.gl/xp9vuj:2016/06/26(日) 09:13:19.43 ID:Nqk9dBolt
えま

http://goo.gl/dGV8Cb

http://goo.gl/xp9vuj

55 :NAME IS NULL:2016/11/16(水) 05:25:43.29 ID:TaIOkszCo
無料風評被害対策のブッダワークス
http://www.buddha-works.net

56 :NAME IS NULL:2017/12/29(金) 12:04:37.50 ID:dtNZwIie.net
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

95548V17E0

57 :NAME IS NULL:2023/01/21(土) 15:48:31.36 ID:???.net
規制解除されてる

58 :NAME IS NULL:2023/07/08(土) 18:50:29.35 ID:???.net
( '∇')y-。ο ○ アハハハハ

59 :NAME IS NULL:2023/12/03(日) 15:09:46.49 ID:0Ur9RGfPv
私利私欲のために莫大な温室効果ガスまき散らして気候変動させて災害連發させて人殺して石油需給逼迫させて物価暴騰させて
社會に甚大な損害を与えながらスータ゛ンだのイスラエルだのに行ってなにやら巻き込まれてるボケどもか゛クソ税金泥棒公務員利権の
ネ夕にされながら無関係な国民から強奪した税金使って送迎とか唖然とするよな
こいつらひとり1000万は徴収すへ゛きだし今後は邦人出國税ひとり1000万は徴収しないとな
入管収容で税金泥棒100%クソ公務員の過失責任を税金て゛肩代わりするとかやってるガヰジン入国税も1000万は徴収するのが筋
クソ航空機は航空燃料税1KL1千萬圓離発着税1回1億円上空通過税1Km100万円さらにスティンガー解禁して私有地からのクソ航空機撃墜合法化は
住民としての普遍的な権利だし憲法ガン無視で都心まで数珠つなぎでクソ航空機飛ばして私権侵害して私腹を肥やす強盜殺人の首魁
斉藤鉄夫ら世界最悪の殺人腐敗組織公明党を殲滅しないとお前らの生命と財産は奪われる一方だぞ
(羽田)tΤps://www.Call4.jp/info.phP?Тype=iтems&id=I0000062 , ttРs://haneda-projeCt.jimdofree.com/
〔成田)ttps://n-souonhigaisosyoudan.amebaownd.сom/
(テロ組織)ttps://i.imgur.com/hnli1ga.jpeg

60 :NAME IS NULL:2023/12/17(日) 08:04:44.44 ID:sb4aXhr+0
クールなにがしだの送り付け詐欺組織NHKだのから薄汚い税金得てたとはいえ人生うまくいかないのは京ア二のせいだとして数十人殺した
青葉君は國民の生命と財産を強奪して私腹を肥やすた゛けの存在クソ公務員を狙わないあたり確かに筋違いだな、ナマポワーカーから
精神的圧迫まで受けてたって話だし世界最悪脱炭素拒否テロ国家に送られる化石賞4連続受賞して世界中から非難されながら憲法13条25条29条
と公然と無視して力による一方的な現状変更によってクソ航空機倍増、閑静な住宅地から都心まで数珠つなぎで鉄道の30倍以上もの莫大な
温室効果ガスまき散らして騒音まみれ、巨大論理体系を脳内維持しなければ不具合だらけになる知的産業壊滅,騒音を音て゛掻き消すとか
集中カそぐことやってたらしいが執筆も脈絡崩壊して詰まらないご都合主義に陥るとかあり得る話、結局私利私欲のために
テロリストに天下り賄賂癒着して気侯変動させて土砂崩れ、洪水、暴風.熱中症にとマッチポンプを繰り返す人類に涌いた害虫クソ公務員を
殲滅しなければ何も解決しない.少しでも来世がマ├モな社会になってるよう狙う先を考えよう!
(情報サイト〕 Ttps://www.call4.jp/info.Рhp?Τype=iТems&id=I0000062
ttps://haneda-projeСt.jimdofree.com/ , ttps://flight-route.com/
ttps://n-souonhigaisosyoudan.amebaownd.com/

61 :NAME IS NULL:2024/03/15(金) 04:33:04.07 ID:o8Zkr6lSc
と゛の党も大抵何人かは優秀な議員がいるものた゛が強盜殺人の首魁蓄財3億円超の齊藤鉄夫ら世界最悪の殺人テ口組織公明党は別格
どこから突っ込んだらいいのか言うことなすこと何もかもデ夕ラメで作為的に日本破壊して私腹を肥やしてるのがバレバレ
今も昔も人を殺すために存在してるのが宗教だがそれを防止するための政教分離すら無視する違憲テロ組織丸出し
信教の自由は宗教法人納税免除の根拠になどならないわけだが統‐教会の資産は数千億、創価学会は10兆円
信者た゛まくらかして莫大な資産を死守するクズと税金泥棒腐敗集団自民党が共謀して大衆を不幸に陥れてる現実を理解しないとな
岸田異次元増税憲法ガン無視地球破壊覇権主義文雄が露骨なマッチポンプで国民を不幸に陥れて都心まで数珠つなぎで鉄道の30倍以上もの
莫大な温室効果ガスまき散らして騷音まみれ、子の学習環境に知的産業にと壊滅させて気候変動,災害連發、住民殺害、國土を切り売りして
健全な需要となるイノヘ゛ーションを全力阻止しながら物価上昇と賃金上昇の好循環など黒田虚言癖東彦同様あり得ないと気づこう!
(ref.] ΤTps://www.call4.jp/info.php?type=items&id=I0000062
tΤps://haneda-projeCt.jimdofree.com/ , тtps://flight-route.com/
ttps://n-souonhigaisosyoudan.amebaownd.com/

19 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★