mysql和sql server有什么区别
有以下几方面的区别:
1.支持类型不一样。
mysql支持enum以及set类型,不支持nchar和nvarchar,还有ntext类型。
而sql server不支持enum以及set类型。
2.递增语句不一样。
mysql的递增语句是AUTO_INCREMENT,而sql server的递增语句是identity。
3.默认值格式不一样。
sql server默认导出表创建语句的默认值表示为((0)),而在mysql里面,不允许默认值带两个括号。
mysql注意事项
1. 避免使用 select * 你需要什么信息,就查询什么信息,查询的多了,查询的速度肯定就会慢
2. 当你只需要查询出一条数据的时候,要使用 limit 1 比如你要查询数据中是否有男生,只要查询一条含有男生的记录就行了,后面不需要再查了,使用Limit 1 可以在找到一条数据后停止搜索
3. 建立高性能的索引 索引不是随便加的也不是索引越多越好,更不是所有索引对查询都有效
4. 建数据库表时,给字段设置固定合适的大小. 字段不能设置的太大,设置太大就造成浪费,会使查询速度变慢
5. 要尽量使用not null
6. EXPLAIN 你的 SELECT 查询 使用EXPLAIN,可以帮助你更了解MySQL是如何处理你的sql语句的, 你可以查看到sql的执行计划,这样你就能更好的去了解你的sql语句的不足,然后优化语句.
7. 在Join表的时候,被用来Join的字段,应该是相同的类型的,且字段应该是被建过索引的,这样,MySQL内部会启动为你优化Join的SQL语句的机制。
8. 如果你有一个字段,比如“性别”,“国家”,“民族”, “省份”,“状态”或“部门”,这些字段的取值是有限而且固定的,那么,应该使用 ENUM 而不是 VARCHAR。
因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。
9. 垂直分割 将常用和有关系的字段放在相同的表中,把一张表的数据分成几张表 这样可以降低表的复杂度和字段的数目,从而达到优化的目的
mysql定义结构需考虑的问题
在设计数据结构时需要注意:
1、永远为表设定一个自增主键ID,并尽可能的利用此ID进行构造
(在配置表中)尽可能的用上unsigned,并尽可能的小。能用tinyint(1字节)、smallint(2字节)、mediumint(3字节),就不用int(4)字节
2、尽可能的使用ENUM,比如性别,属相等,因ENUM是保存为tinyint
3、尽可能的使用not null,除非业务需要使用null
4、把IP地址存为int unsigned ,使用 inet_aton() 和 inet_ntoa() 来进行转换
5、尽量使用短的字符类型
6、尽量使用固长的字符类型,当表中所有的字段都是固定长度,DB 会认为表是static类型,如果有固定长度和非固定长度的字段尽量采用垂直分割,将表分割。