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


March 11, 2010 List
MySQL DB Database on Mar 11, 2010 12:25 AM

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

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


PhotoGallery


TWITTER
Search

Mobile
QR for cellphone  QR for smart phone
For mobile click here
For smart phone click here
Popular Page
Category
Recent Entry
Trackback
Comment
Archive
<     March 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
Link