一、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';
这个会