一、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';
這個會