/// 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 3, 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

投稿者 funa : 12:25 AM | Web | コメント (0) | トラックバック (21)


ナビ:  1
PhotoGallery
SEARCH

Mobile
QRコード
携帯でのアクセスはこちらから!
RSS Radio
radio.gif
CATEGORY
Recent Entrys
Trackbacks
COMMENTS
ARCHIVES
<     July 2010     >
Sun Mon Tue Wed Thi Fri Sat
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
LINKS