《mysql技術內幕》讀書筆記
阿新 • • 發佈:2019-01-07
第2章 使用sql管理資料
2.6 索引表
- 唯一索引
單列不允許有重複值出現,多列(符合)索引,不允許出現重複的組合值。 - 常規(非唯一性)索引
可以獲得索引的好處,但會出現重複值的情況。 - fulltext索引
可用於完成全文檢索 - spatial索引
只適用於包含空間值的myisam表 - hash索引
memory表的預設索引型別,可以通過建立btree索引來改寫它
可以在使用create table語句建立新表時,包含索引定義。
為已有表新增索引,則可以使用語句alter table
或create index
。alter table
語句比create index
alter table tbname add index indx_name (index_columns);
alter table tbname add unique ......
alter table tbname add primary key ...(列不允許為null)
alter table tbname add fulltext ...
alter table tbname add spatial ...(列不允許為null)
create index index_name on tbl_name (index_columns); create unique ...; create fulltext ...; create spatial ...;
這種方式不能省略index_name。
memory 表的預設索引型別是hash,雜湊索引對於精確值的查詢速度非常快,但用於範圍比較,可以使用btree索引來代替它。實現方式是在索引定義裡增加using btree子句。
create table addresslist
(
id int not null,
name char(100),
index (id) using btree
) engine=memory;
如果只想對字串列的字首建立索引,那麼在索引定義裡為該列命名的語法是col_name(n),n表示的是,索引應該包括列值的前n個位元組(二進位制串型別)或前n個字元(非二進位制串型別)。
create table addresslist
(
name char(30) not null,
address binary(60) not null,
index (name(10)),
index (address(15))
);
可以使用drop index
或alter table
語句刪除索引,如果要使用drop index
語句,必須給出那個要被刪除的索引的名字:
drop index index_name on tbl_name;
而刪除primary key,必須使用待引號識別符號的形式給指定名字primary。
drop index `primary` on tbl_name;
前面的語句等價於:
alter table tbl_name drop index index_name;
alter table tbl_name drop primary key;
第11章 mysql資料目錄
檢視資料目錄所在路徑
在後臺輸入命令:
mysqld --verbose --help | grep dir
在mysql聯結器後臺輸入命令:
show variables like 'datadir';
mysql管理的每個資料庫都以資料目錄的子目錄形式存在。
第14章 資料庫維護、備份和複製
一、把資料庫備份為一個檔案或一組檔案
- 建立轉儲檔案:
mysqldump --databases sampdb > sampdb.sql
- 將轉儲檔案複製到遠端主機:
scp sampdb.sql server-ip:/tmp
- 登陸遠端主機,將轉儲檔案載入到他的mysql伺服器裡:
mysql < /tmp/sampdb.sql
二、通過網路把資料庫從一個伺服器直接轉儲到另一個伺服器,無需任何中間檔案。(這種方法很難實驗成功)
mysqldump --databases sampdb | mysql -h server-ip