/// BANGBOO BLOG ///

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

March 11, 2010

MySQL DB Database

Ora Ora Ora Ora Oraの軆??きは、MySQLで。

■インデック繧?
カーディナリティ度が菴?いとは、カラムの値の種類がレコード数に觸??べて藹??ないことをあら繧?す。性別や血液型な縺?
カーディナリティ度が高いとは、カラムの値の種類がレコード数に觸??べて藹??いことをあら繧?す。身長や体重な縺?

インデックスの臀??け方 カーディナリテ繧?(一諢?な値の個謨?)が高いものに臀??ける
create index index_name on table(column);
show index from テーブル名;
インデックスを使用して觸??索しているかの確認
explain select * from table where インデックスを持つカラム名="蛟?";

■トランザクショ繝?
InnoDBのときトランザクション可能、Commitしない場合Rollbackされる
$query = 'START TRANSACTION';
$result = mysql_query ($query);

$query = 'INSERT INTO test_rollback (stock_no) VALUE ('あ')';
$result = mysql_query ($query);

$query = 'COMMIT';
//$result = mysql_query ($query);

■ユニオ繝?
--Viewを作るか、Mergeテーブルを作るか
create view viewX(varx,vary,varz)
as
SELECT * FROM table1
union
select * FROM table2

CREATE TABLE total (
 a INT NOT NULL AUTO_INCREMENT,
 message CHAR(20), KEY(a)
)TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;

■月間、日臀??につい縺?
月間縺?SQL betweenの方が処理は早い
reg_date >= '2010-02-01' AND reg_date < '2010-3-01'
reg_date between 2010-02-01 and 2010-02-28 23:59:59
→これだ縺?59から00縺?1秒が抜ける?

reg_dateがdate型であれ縺?
between reg_data '2010-02-01' and '2010-02-28'で十分

datetime型なら
between reg_data '2010-02-01 00:00:00' and '2010-02-28 23:59:59'で十分

MySQLの最適化
http://slashdot.jp/journal.pl?op=display&uid=4&id=26710
http://txqz.net/blog/2006/12/13/0943

MySQLマイスターに学べ・?? 即効クエリチューニン繧? 記事一隕?
SQL実行計画の疑問解決には「とりあえずEXPLAIN」しよう

twitter
Hatena
Google Buzz
newsing
Yahoo!
Buzzurl
Technorati
del.icio.us
Choix
Iza!
Livedoor Clip
Facebook
Evernote
 

Posted by funa : 12:25 AM | Web | Comment (0) | Trackback (0)