Mysqlインデックスのまとめ

3625 ワード

ここではMysql 5のみを対象とする.1バージョンのまとめ1、すべてのストレージエンジンは、テーブルごとに少なくとも16個のインデックスをサポートし、総インデックス長は少なくとも256バイトです.2、MyISAMとInnoDBテーブルの場合、接頭辞は1000バイト長に達することができるが、CREATE TABLE文の接頭辞の長さは文字数CREATE TABLE test(blob_col BLOB,INDEX(blob_col(10))と解釈される.3、インデックスが最もよく使われるのは2種類のbtreeとHashで、他にもRtreeがあり、空間列タイプのインデックスに使われています.4、テーブルに複数のカラムインデックスがある場合、オプティマイザは最も左のインデックス接頭辞を使用してローを見つけることができます.例えば3列インデックス(col 1,col 2,col 3)がある場合、where句で有効なインデックス形式は(col 1),(col 1,col 2),(col 1,col 2,col 3)5、LIKEのパラメータがワイルドカードで始まる定数文字列でない場合、インデックスはLIKE比較SELECT*FROM tbl_にも使用できるname WHERE key_col LIKE 'Patrick%'; 6、col_nameはインデックスされ、colを使用します.name IS NULLの検索にはインデックスが使用されます.7.WHERE句のすべてのANDレベルを越えないインデックスは、クエリの最適化には使用されません.(これはよく理解されていませんが、文字通りすべてのAND条件のフィールドがインデックスされる必要があると理解されているので、クエリーの最適化が効果的になるのは不便でしょう)8、インデックスの作成/変更によく使われる2つの方法:
create index index1 on table_name (col1,col2(10),col3);

alter table table_name add index index_name (col1,col2,col3);

10\
  Mysql       
use information_schema;

select concat(round(sum(DATA_LENGTH/1024/1024), 2), 'MB')
   as data from TABLES where table_schema='forexpert';

Mysql     
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name]

11.データベースの文字セットの変更
//                utf8  
ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
//           
ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

12、ユーザーを追加し、権限とパスワードを設定する
grant replication slave on *.* to'repl'@'218.206.70.146' identified by 'repl';
grant all on *.* to'repl'@'%' identified by 'repl';
#      
show grants for root@'localhost'

13、
 `role_id` int(11) UNSIGNED NOT NULL DEFAULT '0',
//mysql              
//mysql5.6.14        

Mysql 1枚のテーブルのデータを別のテーブルに挿入
1.        
  insert into  1
  select * from  2
2.       (          )
  insert into  (  1,  2,  3)
  select   1, 2, 3 from  2

Mysqlマルチテーブルカスケード更新
//   
UPDATE product p
INNER JOIN productPrice pp
ON p.productId = pp.productId
SET pp.price = pp.price * 0.8
WHERE p.dateCreated < '2004-01-01'
//   
UPDATE product p, productPrice pp
SET pp.price = pp.price * 0.8
WHERE p.productId = pp.productId
AND p.dateCreated < '2004-01-01'
//   
UPDATE product p
LEFT JOIN productPrice pp
ON p.productId = pp.productId
SET p.deleted = 1
WHERE pp.productId IS null

1台のマシンに複数のMysqlがインストールされている場合、mysqldumoで次のエラーが発生する可能性があります.
mysqldump: unknown option '--no-beep'  
//      
mysqldump --no-defaults -u root -p wlan> D:\wlan.sql

Mysql権限チェックの削除時のDNS順方向および逆方向クエリ
# my.cnf   
skip_name_resolve

クエリー文では/Gコマンドを使用してデータを垂直に表示できますが、Navicatでは使用できません.コマンドラインの下でのみ使用できます.
イベントの表示
a、eventの詳細を表示するには、次のビューを使用します.
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME = 'e_test_insert'   AND EVENT_SCHEMA = 'test'\G;
b、すべてのevent:show eventsを簡単にリストする
構文:
SHOW EVENTS [FROM schema_name]
    [LIKE 'pattern' | WHERE expr]
すべてのイベントをフォーマット表示
SHOW EVENTS\G
testユーザーのeventをフォーマット表示
show events FROM test;
c、eventの作成情報の表示
SHOW CREATE EVENT event_name
show create event test.e_test\G
解凍版Mysqlをwinシステムサービス項目に追加
mysqld --install MySQL --defaults-file=C:\my-opts.cnf #    

mysqld --install-manual #    

注意:defaults-fileパラメータのパスにスペースを使用する場合は、必ず引用符を使用します.そうしないと、インストールサービスが失敗します(win 7)