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の構文は次のとおりです.
例えば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。