使用mySQL部分建议

来源:互联网 发布:mysql删除表语句 编辑:程序博客网 时间:2024/05/17 04:24

mySQL相关知识

本内容摘自OMG玩家体验区

一、MYSQL简单介绍

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。在数据库选择上,由于其体积小、速度快、总体布置成本低,最重要的是开源代码这些特点,成了许多公司为了降低网站的总体成本的不二选择。

MySQL数据库特性

1、能够工作在众多的平台,功能强大
2、提供事务性引擎和非事务性引擎
3、支持丰富的数据类型
4、高性能、稳定、支持大数据
5、提供了丰富的API
6、提供众多的工具和文档
7、开源

MySQL 发展历史

1、1979年,报表工具、数据引擎
2、1996年,MySQL1.0支持SQL
3、2000年,MySQL AB公司成立
4、2008年,SUN公司收购MySQL AB公司
5、2009年,Oracle收购SUN公司

MySQL进行数据库设计原则

1.字段类型选择
- 根据需求选择合适的字段类型,在满足需求的情况下字段类型尽可能小。
-数据类型尽可能简单
-只分配满足需求的最小字符数,不要太慷慨
原因:更小的字段类型占用更少的内存和磁盘空间。使用时,占用相对更少的磁盘I/O和更少的宽带。
2.主键选择
-显式的定义一个数值类型自增字段的主键,这个字段可以仅用于做主键,不做其他用途
-MySQL主键应该是单列,以便提高连接、筛选等操作的效率,一般(建议)主键放在表的第一列
-主键的字段类型尽可能小
-尽量保证不对主键字段进行修改、主键字段发生变化,容易引发数据存储碎片,降低I/O性能。
-MySQL主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列。禁忌字符串做索引。
推荐:推荐数字类型做主键并采用auto_increment属性。
3.NOT NULL OR NULL
尽可能设置每个字段为NOT NULL,除非有特殊的需求,原因如下:
- 使用含有NULL列做索引的话会占用更多的磁盘空间,因为索引NULL列需要额外的空间来保存
- 进行比较时,程序处理会更复杂,出错概率会增大
- 含有NULL的列比较特殊,SQL很难优化,如果查询包含有NULL列,会极大影响索引效率。
4.编写高效的SQL语句
-不要在直接使用类似select * from形式操作数据库。推荐只操作需要使用的列
-范例:
SELECT * FROM ‘pre_common_banned’;
SELECT id FROM ‘pre_common_banned’;

-尽量不要在数据库中做计算
-范例:
SELECT id FROM pre_home_notification WHERE uid>0 AND new=0 AND dateline<1329357342-172800;
SELECT id FROM pre_home_notification WHERE uid>0 AND new = 0 AND dateline < 1329184542;

-where子句尽可能不要对列进行计算和使用函数,例如:
SELECT ‘name’FROM test WHERE id-1 = 100;
SELECT ‘name’FROM test UNIX_TIMESTAMP(date_time)=1331481600;
推荐:
SELECT ‘name’FROM test WHERE id=99;
SELECT ‘name’ FROM test WHERE date_time = FROM_UNIXTIME(1331481600);

-避免负向查询和%前缀模糊查询
范例:
SELECT ‘title’ FROM ‘v9_news’ WHERE title LIKE %HR美眉%;
推荐:
SELECT ‘title’ FROM ‘v9_news’ WHERE title LIKE ‘HR美眉%’;

-避 免隐式类型转换,例如字符型一定要用’ ‘,数字类型一定不要使用’ ‘;
范例:
SELECT ‘userid’ FROM ‘v9_member’ WHERE username = 1786099370;
SELECT ‘userid’ FROM ‘v9_member’
WHERE userid = ‘1786099370’;

0 0
原创粉丝点击