mysql procedure analyse()の使用


菜鳥時代の私たちは当初、プロジェクト分析設計mysqlデータベースを受け取ったとき、多かれ少なかれ成熟したオープンソースプロジェクトのデータベース設計を考慮した.
例えばsnsシステムのデータベースを設計する時私達は自分のデータベースの知識に基づいて同時にuchomeのライブラリの構造を参考にすることができて、1つの経典の例は私がフォーラムのデータベースを設計する時dzの招待状のテーマの表のいくつかのフィールドの冗長な思想を参考にして、および大きいフィールドのレベルは概念を分割します;当初はなぜか分からなかったが、データベース設計のモデルから逸脱していることも理解できなかった.知識の増加に伴って概念的に、実際の状況は変化している.少しずつ基礎知識がわかってきた
(ここでは良いmysqlの本をお勧めします:簡朝陽さんの「mysql性能調整とアーキテクチャ設計」、もちろん私は一度読んだだけで、深い研究を待っています)
タイトルの内容に戻り、テーブルを設計するときに、あるフィールドがどのようなタイプを選んだのかを考えることがあります.菜鳥級を越えたphperはかなりの経験を持って直接パチパチ叩くことができますが、実は後期のチューニングでもprocedure analyse()を使うことができます.表構造を分析してmysqlが私たちに与えたフィールドの提案を見て、実際の状況を総合していくつかのフィールドのタイプを調整します(これはもう些細で、一般的な応用はこんなに細かくはありません.そして、私たちは経験設計のデータベースが基本的に応用を満たすことができることを考慮します.私はここでこれらの知識を理解して自分に記録をしただけです).
procedure analyse();文法は次のとおりです.
select column from table_name procedure analyse();
次の文を参照します.
PROCEDURE ANALYSEは、selectクエリーの結果を分析することによって、既存のテーブルの各列に最適化を推奨します.PRCEDURE ANALYSEの構文は次のとおりです.
SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])

max_elements (   256) analyze                      .
analyze                   ENUM,              
max_elements ENUM             max_memory (   8192) analyze                       

    
------------------------------------------------------------------------------------
mysql> DESC user_account;
+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| USERID    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| USERNAME  | varchar(10)      | NO   |     | NULL    |                |
| PASSSWORD | varchar(30)      | NO   |     | NULL    |                |
| GROUPNAME | varchar(10)      | YES  |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

mysql> select * from user_account PROCEDURE ANALYSE(1)\G;
*************************** 1. row ***************************
             Field_name: ibatis.user_account.USERID
              Min_value: 1
              Max_value: 103
             Min_length: 1
             Max_length: 3
       Empties_or_zeros: 0
                  Nulls: 0
Avg_value_or_avg_length: 51.7500
                    Std: 50.2562
      Optimal_fieldtype: TINYINT(3) UNSIGNED NOT NULL
*************************** 2. row ***************************
             Field_name: ibatis.user_account.USERNAME
              Min_value: dfsa
              Max_value: LMEADORS
.........................................................
---------------------------------------------------------------------------------------
            analyze  ibatis.user_account.USERID    1,   103,    1,
    3...,            :             TINYINT(3) UNSIGNED NOT NULL。