MySQLデータベースインデックス使用シーン&注意事項
3699 ワード
目次
1.インデックスをサポートするクエリ2.注意事項と提案3.福祉彩卵
インデックスをサポートするクエリーは何ですか?
1 MySQLは現在、プリアンブル列をサポートしています
2.索引列の範囲検索
3.join列
4.where句
5.mysqlオプティマイザ
二注意事項と提案
1.where条件のインデックス列は式の一部ではありません.mysqlは関数インデックスをサポートしていません.
2.InnoDB二次索引下位葉極点は索引+主キー値を記憶する
3.インデックスはできるだけ高選択性である
4.より短いインデックスを使用
5.インデックスの作成が多すぎないようにする
6.ユニークな値のカラムの場合は、ユニークなインデックスを作成する方がよいし、重複するデータが発生しないことを確認することもできる.
7.上書きインデックスを使用するとパフォーマンスが大幅に向上
8.インデックスによるソート
9冗長インデックスを追加するには、次の点を考慮する必要があります.
3.福祉彩卵
職位:テンセントOMG広告バックグラウンドの高級開発エンジニア;Base:深セン;シーン:膨大なデータ、To B、To C、シーンは非常に挑戦的です.基礎要求:常用データ構造とアルゴリズムを熟知する;常用ネットワークプロトコルを熟知し、ネットワークプログラミングを熟知する.オペレーティングシステムを熟知し、有線で問題を調査した経験がある.MySQL、oracleを熟知しています;JAVA、GoLang、c++のいずれかの言語を熟知しています.可内推,欢迎各位优秀开发道友私信[微笑み]期待注目私の开発お兄さん、お姉さん达私信私、机会はとても良くて、プラットフォームは震え音に対して、広告の生态のプラットフォーム、Facebookの広告のプラットフォームのようで、あなた达が履歴书で私を壊すことを望みます~连络先の微信13609184526
ブログ引越し:大坤の個人ブログへようこそ
1.インデックスをサポートするクエリ2.注意事項と提案3.福祉彩卵
インデックスをサポートするクエリーは何ですか?
1 MySQLは現在、プリアンブル列をサポートしています
,mysql 。
:
create index idx_a_b_c on tb1(a,b,c)
1.where a=?
2.where a = ? and b = ?
3.where a = ? and b = ? and c = ?
4.where a = ? and c = ?
mysql a
2.索引列の範囲検索
, , where ... between
and ... > ,< , , ,
。
in
3.join列
, select a.col1,b.col2 from a join b on a.id = b.id,
id , a , a , a ,
a id b 。
4.where句
:
where a = ? and b = ? and c>1000
where a = ? and b = ? and c = ? and d>1000
where +
create index idx_a_b_c_d on tb1(a,b,c,d);
:
where a = ? and b = ? and c>1000
where a = ? and b = ? and c = ? and d>1000
:
where a = ? and b =? and c>10000 and d< 10000
d
d <10000
where a >? and b =? and c>10000 and d< 10000
a , b、c、d
, , 。
5.mysqlオプティマイザ
mysql , max( ) 。 max,min 。
二注意事項と提案
1.where条件のインデックス列は式の一部ではありません.mysqlは関数インデックスをサポートしていません.
2.InnoDB二次索引下位葉極点は索引+主キー値を記憶する
InnoDB , , , ID , , 。
3.インデックスはできるだけ高選択性である
, , ,
, , ,
, 。
, ,
。
4.より短いインデックスを使用
, 。
:alter table test add key(col(6))
。
select count(distinct left(col_name,5))/count(*) As sele5,
select count(distinct left(col_name,6))/count(*) As sele6,
select count(distinct left(col_name,7))/count(*) As sele7,
select count(distinct left(col_name,8))/count(*) As sele8,
select count(distinct left(col_name,9))/count(*) As sele9
from table_name;
5.インデックスの作成が多すぎないようにする
, , ,
, , 。
6.ユニークな値のカラムの場合は、ユニークなインデックスを作成する方がよいし、重複するデータが発生しないことを確認することもできる.
7.上書きインデックスを使用するとパフォーマンスが大幅に向上
: , 。 idx_a_b_c tb1 a、b、c ,
sql
select a,b from tb1 where a = ? and b = ? and c =?
mysql idx_a_b_c 。 。
explain , extra “using index ” 。
8.インデックスによるソート
mysql , , ,
:
1. order by , 。
table1 idx_a_b_c( a,b,c );
:select * from table1 order by a,b,c;
select * from table1 where a=? and b =? order by c
。
2. , order by 。
9冗長インデックスを追加するには、次の点を考慮する必要があります.
column A (columnA,columnB)
, , , 。
, , , 。
3.福祉彩卵
職位:テンセントOMG広告バックグラウンドの高級開発エンジニア;Base:深セン;シーン:膨大なデータ、To B、To C、シーンは非常に挑戦的です.基礎要求:常用データ構造とアルゴリズムを熟知する;常用ネットワークプロトコルを熟知し、ネットワークプログラミングを熟知する.オペレーティングシステムを熟知し、有線で問題を調査した経験がある.MySQL、oracleを熟知しています;JAVA、GoLang、c++のいずれかの言語を熟知しています.可内推,欢迎各位优秀开发道友私信[微笑み]期待注目私の开発お兄さん、お姉さん达私信私、机会はとても良くて、プラットフォームは震え音に対して、広告の生态のプラットフォーム、Facebookの広告のプラットフォームのようで、あなた达が履歴书で私を壊すことを望みます~连络先の微信13609184526
ブログ引越し:大坤の個人ブログへようこそ