Mysql 优化之库表设计

定长与变长分离

常用与不常用列分离

例如:

这张表不够好,可以优化

分析:这张表除了username/intro列之外,每一列都是定长的.

我们不妨让其所有列,都定长,可以极大提高查询速度.

Username char(10) 是会造成空间的浪费,但是提高的速度,值.

Intro char(1500) 却浪费的太多了,另一方面,人的简介,一旦注册完,改的频率也并不高.

我们可以把 intro列单独拿出来,另放一张表里.

时间: 2024-10-14 08:48:30

Mysql 优化之库表设计的相关文章

Mysql配置优化,库表设计

Mysql 服务器参数类型: 基于参数的作用域: 全局参数:set global autocommit = ON/OFF; 会话参数(会话参数不单独设置则会采用全局参数):set session autocommit = ON/OFF; 注意:全局参数的设定对于已经存在的会话无法生效,会话参数的设定随着会话的销毁而失效全局类的统一配置建议配置在默认配置文件中,否则重启服务会导致配置失效. 寻找配置文件不迷路: mysql --help 寻找配置文件的位置和加载顺序 Default options

(4)mysql优化之数据库表设计优化

概述 在数据库设计过程中,用户可能会经常遇到这样的问题:1.表里面的字段到底该设置多长合适?2.是否应该把所有表都按照第三范式来设计? 优化表的数据类型 1.语法 表的数据类型参见链接: http://blog.csdn.net/pursuing0my0dream/article/details/44729707 在mysql中,我们可以使用函数 procedure analyse()对数据库中的表进行分析,该函数可以对数据表中的列的数据类型提出优化建议. #语法 select * from t

MySQL优化分库分表,为什么要分表,分表以后如何进行排序查询,业务如何设计?

MySQL优化分库分表,为什么要分表,分表以后如何进行排序查询,业务如何设计? 昨天面试新人的时候,遇到了这么一个问题,按照自己的想法大体聊了一些,但大多是感性的,并没有完整的了解why and how. 今天查了一些相关的资料,包括<MySQL性能调优与架构设计>.<高性能Mysql>,慢慢的整体理解,请大家指正. 之一,为什么要分表? 分表,按形式,有水平分表和主附分表.水平分表常见于按ID取模或者按日期将相同表结构的内容散列到不同的表上,主附分表常见于有对应关系的多张表,通过

优化Oracle数据库表设计

绝大多数的Oracle数据库性能问题都是由于数据库设计不合理造成的,只有少部分问题根植于Database Buffer.Share Pool.Redo Log Buffer等内存模块配置不合理,I/O争用,CPU争用等DBA职责范围上.所以除非是面对一个业已完成不可变更的系统,否则我们不应过多地将关注点投向内存.I/O.CPU等性能调整项目上,而应关注数据库表本身的设计是否合理,库表设计的合理性才是程序性能的真正执牛耳者.合理的数据库设计需要考虑以下的方面: ·业务数据以何种方式表达.如一个员工

转一篇MYSQL文章《数据库表设计,没有最好只有最适合》

http://mp.weixin.qq.com/s/a8klpzM5iam0_JYSw7-U4g 我们在设计数据库的时候,是否会突破常规,找到最适合自己需求的设计方案,下面来举个例子: 常用的邻接表设计,都会添加 一个 parent_id 字段,比如区域表(国.省.市.区): CREATE TABLE Area ( [id] [int]  NOT NULL, [name] [nvarchar]  (50) NULL, [parent_id] [int]  NULL, [type] [int]  

(5)mysql优化之MyISAM表锁

概述 ??MyISAM存储引擎只支持表锁,mysql的表锁有两种模式:读锁和写锁.他们的兼容关系是(对myisam的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写操作*)和(对myisam的写操作,则会阻塞其他用户对同一表的读和写操作),读写操作是串行的. 如何加表锁 ??MyISAM在执行查询语句(select)前,会自动给涉及的所有表加上读锁.在执行更新操作(update,delete,insert等)前,会自动给涉及的表加上写锁,这个过程不需要用户干预.如果要显示加锁,参见

如何连接到MySQL并查看库表

使用客户机连接到MySQL后,使用use关键字选择可用的数据库 use databasename; 数据库.表.列.用户.权限等信息被存储在数据库和表中,show命令显示 1)显示数据库 SHOW DATABASES; 2)获得当前数据库的可用的表 show tables; 3)显示表列 show columns from customers; 等同于 describe customers; 4)其他show语句: show status; 显示广泛的服务器状态信息 show create da

数据库 mysql 优化器原理

MySQL查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行. 你的最终目标是提交SELECT语句查找数据行,而不是排除数据行.优化器试图排除数据行的原因在于它排除数据行的速度越快,那么找到与条件匹配的数据行也就越快. 如何 更好的 利用索引: 1:尽量比较数据类型相同的数据列.当你在比较操作中使用索引数据列的时候,请使用数据类型相同的列.相同的数据类型比不同类型的性能要高一些. 例如,INT与BIGINT是不同的.CHAR(10)被认为是C

数据库表设计的随笔(分库分表)

笔者目前就职的是一家创业型的互联网公司,既然算是互联网公司,那么就会设计到无论是应用系统还是数据库的分布式.下面简单介绍下有关数据库方面的一些设计. 数据库表的设计,根据自己的业务所需可以拆分成多库.有订单库.产品库.账户库.底层支付库等等,这也就是传说中的垂直分库.那么数据库架构和数据库优化有哪些解决思路: 1.垂直分表.垂直分表也就是“一张表拆分成多张表”,比如订单表里面,有不同类型的订单,拿普通订单和一元夺宝订单来说,一元夺宝订单会有抽奖码中奖吗等等,这些是一元夺宝订单独有的,就可以单独拿