sqlのインデックス化について

2011/04/06

selectを投げたら数時間後にエラーとして返ってきたので処理が重いんだねと思いつつ途方にくれていた。

そこで現れたのが「インデックス化」ってヤツ。
「目次にする」とか意味わかんない表現が散見している。

自分なりにまとめてみた。

インデックス化をするとselectが早くなる場合がある。
インデックス化をするとinsert・updateが遅くなる場合がある。
インデックス化は列(カラム)に対して行う。

こんな感じかな。
さらに細かい内容。

インデックス化をするとSQL用の見えない列(カラム)が作成されている。そのため、insert・updateをする際、その列(カラム)にもデータを記載するため処理が遅くなる。
インデックス化をするんだったらwhereやjoinとかで頻繁に使う列(カラム)をしてあげる。

さらにまとめてみたもの。

通常の「order sort」だったら一つずつチェックして並べ替えている。
「index化」ってヤツをしておけば一つずつチェックする必要がなくなるため、処理時間が早くなる。
そのため頻繁に使う列を「index化」ってヤツにしておけばselectの結果が早くなる。

「index化」ってヤツをすると感覚的にはテーブルに見えない専用の列ができる感じ。
そのため、insert・updateとかするとその分、処理が重くなるという問題が発生。
※全部の列を「index化」するとデータの追加とかの処理が重くなる。かわりにselectの処理は軽くなる。

selectの前にexplainってのをつけると処理にかかる予測時間(?)がでてくる。
costの値が大きいと遅い。具体的にどれだけの値が「大きい」かは不明。

「select * from [テーブル]」だったら「explain select * from [テーブル]」みたいな感じで。

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい