Mysql的開發、維護、管理的讀後筆記

一、decimal定點數不寫精度默認沒有小數位

二、同一表中的timstamp類型只能有一個默認當前系統時間

三、char類型無法保存值後面的空格,默認使用空格填充剩下的長度

四、存儲引擎的對比:

這裏寫圖片描述

五、以select,insert爲主的操作推薦MyISAM引擎,這個引擎不支持事務和外鍵,推薦使用char保存字符;常有更新操作推薦InnoDB引擎,此引擎還支持事務和外鍵,推薦適應varchar類型保存數據

六、關於浮點數和定點數的選擇:

這裏寫圖片描述

七、設計索引的原則:

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

1、索引會使用的情況

11、創建多列索引查詢用到最左邊的列,如

create index ind_sales2_companyid_moneys on sales2(company_id,moneys);

然後使用:
select * from salses2 where company_id=2006;

以上會使用到創建的複合索引。

22、like查詢的常量%不在第一個字符

select * from company2 where name like '%3';
上面這個不會使用索引
select * from company2 where name like '3%';
上面這個就會使用

33、對大的文本的搜索,使用全文索引而不是用like “%…%”。

全文索引的使用和創建如下:

CREATE TABLE fulltext_sample(copy TEXT,FULLTEXT(copy)) TYPE=MyISAM; 
或者建完表之後使用:
ALTER TABLE fulltext_sample ADD FULLTEXT(copy);
查詢時使用:
SELECT * FROM fulltext_sample WHERE MATCH(copy) AGAINST('love');

4、列名是索引使用column_name is null將使用索引

2、索引不會使用的情況說明:

11、如果mysql估計使用索引比全表掃描更慢,則不使用索引。例如搜索key_part1在1到100之間時

22、memory/heap表並且where中不使用=進行索引列。heap表只有在=條件下才會使用索引

33、or的條件中,or前的條件中有索引而後面的條件中的列中沒有索引

44、複合索引中不適索引的第一列的

55、like以%開始的

66、如果列類型是字符串,那麼記得把where條件中的字符常量值用引號引起來,否則也不會使用索引,如:

select * from company2 where name = 294;
上面的不會用到
select * from company2 where name = '294';
這個會

八、sql mode:1、完成數據校驗。2、保證sql符合標準語法。3、方便在不同類型數據庫遷移。

九、鎖機制

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章