Welcome 微信登录

首页 / 数据库 / MySQL

Schema的优化和索引 - 范式和非范式

Schema的优化和索引 - 范式和非范式

Schema的优化和索引 - 范式和非范式2010-05-30 javaeye.com 风雪涟漪有很多方法来展现给定的数据。从完全范式到完全的非范式以及介于两者之间。在符合范式的数据库中,每个事实展现一次并且仅仅展现一次而已。相反的,在非范式的数据库,信息重复或者存储在很多的地方。如果你不熟悉范式,你应该加强学习了。关于范式,你可以通过一些书和网上资源来学习。在这里,我们主要介绍这一章中你应该明白的知识。让我们看看经典的例子,那就是employee,dep...
Schema的优化和索引 - 学习一个索引示例

Schema的优化和索引 - 学习一个索引示例

Schema的优化和索引 - 学习一个索引示例2010-05-30 javaeye.com 风雪涟漪用例子来理解索引的概念是再简单不过的方法了。因此我们研究一个索引示例。假使我们要做一个在线约会的网站。用户的资料就会有很多列,比如country, state/region, city, sex, age, eye color等等。这个站点必须支持这些属性的组合来查询用户资料。也必须支持让用户通过用户最近的在线时间,其他会员的打分等等来排序和限制结果。对于这...
Schema的优化和索引 - 选择最佳的数据类型 - 前言

Schema的优化和索引 - 选择最佳的数据类型 - 前言

Schema的优化和索引 - 选择最佳的数据类型 - 前言2010-05-30 javaeye.com 风雪涟漪越小也就是越好的一般来说,尽量选择小的数据类型足以符合你的存储和展现数据。越小的数据类型也常常是越快的,因为它们使用了较少的硬盘空间,内存,CPU缓存。它们也需要更少的CPU处理周期。要确定的是不要低估你要存储数值的范围,因为在你的Schema的多个位置中,增长的数据类型范围会让操作很费力费时。如果你对不知道选择什么样的数据类型,那么就选择一个最...
Schema的优化和索引 - 选择最佳的数据类型 - 主键的选择

Schema的优化和索引 - 选择最佳的数据类型 - 主键的选择

Schema的优化和索引 - 选择最佳的数据类型 - 主键的选择2010-05-30 javaeye.com 风雪涟漪对于主键,选择一个好的数据类型尤为关键。你可能经常需要用这些列和其他做比较以及用这些列查找其他的列。你可能也把它们作为另一些表的外键。因此当你选择主键的数据类型时,应该保持相关表主键类型一致。当选择主键的数据类型,你不仅要考虑存储类型,也要考虑MySQL操作和比较这些类型的表现情况。比如,内部存储ENUM和SET是作为整型的,但是当在字符串...
Schema的优化和索引 - 选择最佳的数据类型 - 日期和时间类型

Schema的优化和索引 - 选择最佳的数据类型 - 日期和时间类型

Schema的优化和索引 - 选择最佳的数据类型 - 日期和时间类型2010-05-30 javaeye.com 风雪涟漪日期和时间类型MySQL对于不同种类的日期和时间有很多的数据类型,比如YEAR和DATE。MySQL可保存时间颗粒度是一秒。然而,时间的计算可以精确到毫秒。我们将会教你如何解决存储引擎的局限性。大部分时间类型都没有什么可选择的。所以那个是最佳的选择不是一个问题。只有一个问题那就是当你即要保存日期也要保存时间的时候,将要做什么。MySQL...
Schema的优化和索引 - 选择最佳的数据类型 - 整数和实数

Schema的优化和索引 - 选择最佳的数据类型 - 整数和实数

Schema的优化和索引 - 选择最佳的数据类型 - 整数和实数2010-05-30 javaeye.com 风雪涟漪整数总共有两种数字类型:整数和实数(有小数部分的)。如果你保存的是整数,使用下列的整型:TINYINT,SMALLINT,MEDIUMINT,INT或者BIGINT。它们分别需要8,16,24,32,以及64位的存储空间。它们存储的值范围为N就是它们使用的存储空间所需的位数。整型有个一个可选择的参数,就是UNSIGNED,它不允许存储负数,...
Schema的优化和索引 - 选择最佳的数据类型 - 字符串类型

Schema的优化和索引 - 选择最佳的数据类型 - 字符串类型

Schema的优化和索引 - 选择最佳的数据类型 - 字符串类型2010-05-30 javaeye.com 风雪涟漪字符串类型MySQL支持很多字符串类型,以及它们的许多变化类型。这些数据类型在4.1和5.0版本变化都比较大。可以说变得更复杂了。早在4.1版本中,每个字符串列都有自己的字符集和对于那些字符集的排序规则,或者叫做collation(校对)。VARCHAR和CHAR有两个主要的字符串类型就是VARCHAR和CHAR。它们都存储了字符值。不幸的...
Schema的优化和索引 - 选择最佳的数据类型 - BIT数据类型

Schema的优化和索引 - 选择最佳的数据类型 - BIT数据类型

Schema的优化和索引 - 选择最佳的数据类型 - BIT数据类型2010-05-30 javaeye.com 风雪涟漪MySQL有很多使用单独的bit去存储数据的类型。不管底层的存储格式以及操作,从技术上来看所有的这些类型都是字符串类型。BIT在5.0之前的版本,BIT仅仅等同于TINYINT。但是在5.0之后的版本,它已经是个具有一些特性的,和以前完全不同的数据类型了。我们在这讨论的是新增加的特性。你可以使用BIT列存储一个或多个true/false...
Schema的优化和索引 - 选择最佳的数据类型 - 特殊类型的数据

Schema的优化和索引 - 选择最佳的数据类型 - 特殊类型的数据

Schema的优化和索引 - 选择最佳的数据类型 - 特殊类型的数据2010-05-30 javaeye.com 风雪涟漪特殊类型的数据一些特殊类型的数据可能并不直接的和MySQL内置类型相吻合。一个例子就是用STAMPTIME存储更精确的时间。另一个例子是IP地址。人们常常使用VARCHAR(15)来存储IP地址。然而,一个IP地址其实是一个无符号的32bit的整型,并不是一个字符串。IP地址的点儿仅仅是为了方便人们去读取IP地址而已。你应该用无符号整型...
Schema的优化和索引 - 高性能的索引策略 - 前言

Schema的优化和索引 - 高性能的索引策略 - 前言

Schema的优化和索引 - 高性能的索引策略 - 前言2010-05-30 javaeye.com 风雪涟漪创建正确的索引和正确的使用它们,是获得好的查询性能的关键所在。我们已经介绍了不同种类的索引并且探究了它们的优缺点。现在让我们来看看怎样深入的使用强大的索引。有许多高效的选择和使用索引的方法,因为有很多特殊情况的优化以及一些专门的行为。决定什么时候使用并且评估你的选择对性能所造成的潜在影响,这些也是我们将会学的技能。接下来的部门会教你怎样高效的使用索...
Schema的优化和索引 - 高性能的索引策略 - 覆盖索引(Covering Indexes)

Schema的优化和索引 - 高性能的索引策略 - 覆盖索引(Covering Indexes)

Schema的优化和索引 - 高性能的索引策略 - 覆盖索引(Covering Indexes)2010-05-30 javaeye.com 风雪涟漪索引是高效找到行的一个方法,但是MySQL也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了(或覆盖了)满足查询结果的数据就叫做覆盖索引(covering indexex)覆盖索引是非常强大的工具并...
Schema的优化和索引 - 高性能的索引策略 - 隔离列(Isolate the Column)

Schema的优化和索引 - 高性能的索引策略 - 隔离列(Isolate the Column)

Schema的优化和索引 - 高性能的索引策略 - 隔离列(Isolate the Column)2010-05-30 javaeye.com 风雪涟漪如果你在一个查询中不隔离已经索引的列,一般来说MySQL就不会使用这个列上的索引,除非在查询中隔离这个列。“隔离”列的意思就是,这个列不能使一个表达式的一部分或者被放在一个函数的内部。举个例子,在这个查询中,你不能使用在actor_id上的索引。mysql> SELECT ac...
Schema的优化和索引 - 高性能的索引策略 - 聚簇索引(Clustered Indexes)

Schema的优化和索引 - 高性能的索引策略 - 聚簇索引(Clustered Indexes)

Schema的优化和索引 - 高性能的索引策略 - 聚簇索引(Clustered Indexes)2010-05-30 javaeye.com 风雪涟漪聚簇索引并不是一个独立的索引类型。确切的说它们是存储数据的一个途径。在不同实现之间,还是有一些细节上的变化,但是InnoDB的聚簇索引实际是在相同的结构中把B-TREE索引和这些行一并的存储。当一个表中有聚簇索引,它的行实际存储在索引的叶子的页(leaf pages)。“clustered&rd...
Schema的优化和索引 - 高性能的索引策略 - 前缀索引和索引的选择性

Schema的优化和索引 - 高性能的索引策略 - 前缀索引和索引的选择性

Schema的优化和索引 - 高性能的索引策略 - 前缀索引和索引的选择性2010-05-30 javaeye.com 风雪涟漪有的时候你可能需要索引字符数非常多的列。这会让你的索引非常大并且很慢。一个策略就是模拟hash索引。前一部分已经说过了。但是有的时候这种方法也不是很好。将要怎么做。一般可以用索引前一部分的一些字符的方法来节省空间并且可以获得好的性能。这样可以使你的索引使用更少的空间,但是这样会降低选择性。索引的选择性(Index selectiv...
Schema的优化和索引 - 高性能的索引策略 - 冗余和重复的索引

Schema的优化和索引 - 高性能的索引策略 - 冗余和重复的索引

Schema的优化和索引 - 高性能的索引策略 - 冗余和重复的索引2010-05-30 javaeye.com 风雪涟漪MySQL可以在一个列上创建多个索引;这么做并不会提醒和防止发生错误。MySQL必须单独维护每一个重复的索引,当语句优化器优化语句的时候,它会参考这些索引。这样会对性能造成影响。重复的索引是那些具有相同类型,在同顺序下的相同一组索引。你应该避免这样来创建它们并且如果发现它们要尽早的删除。有的时候你可能在不知道的情况下就创建了重复索引。比...
Schema的优化和索引 - 高性能的索引策略 - 使用索引扫描来进行排序

Schema的优化和索引 - 高性能的索引策略 - 使用索引扫描来进行排序

Schema的优化和索引 - 高性能的索引策略 - 使用索引扫描来进行排序2010-05-30 javaeye.com 风雪涟漪MySQL有两种方法生成有序的结果:使用文件排序或者按顺序的扫描索引。你可以使用EXPLAIN来查看type列是否是index来得知MySQL是否计划的扫描索引。扫描索引本身是非常快速的,因为它只是简单的需要从一个索引实体移动到下一个。然而,如果没有使用索引覆盖这个查询,它就会查找在索引中发现的每一行。这是个随机IO的过程,因此从...
Schema的优化和索引 - 高性能的索引策略 - 索引和锁

Schema的优化和索引 - 高性能的索引策略 - 索引和锁

Schema的优化和索引 - 高性能的索引策略 - 索引和锁2010-05-30 javaeye.com 风雪涟漪InnoDB中,索引所扮演的角色是非常重要的。因为它们可以能让语句锁定更少的行。这是个要考虑的事情,因为在MySQL5.0 InnoDB中一个事物提前之前,是不会释放锁的。如果查询语句不会检索它们不需要的行。它们将锁定更少的行。并且对于性能有提高,原因有二:首先,即使InnoDB行锁是非常有效率的并且使用更少的内存,但是行锁也会消耗一定的资源。...
Schema的优化和索引 - 高性能的索引策略 - 压缩索引(Packed Indexes)

Schema的优化和索引 - 高性能的索引策略 - 压缩索引(Packed Indexes)

Schema的优化和索引 - 高性能的索引策略 - 压缩索引(Packed Indexes)2010-05-30 javaeye.com 风雪涟漪MyISAM使用前缀压缩来降低索引的大小,这样就可以把更多的索引放到内存中并且在某些情况下可以大幅度提升性能。默认的是压缩字符串,但是你可以指定它来压缩整型的值。MyISAM通过存储块的第一个值来压缩每个索引块,之后通过记录相同前缀的字节数在加上不同后缀实际的数据的方式来存储在块中的每个附加的值。举个例子,如果第...
解决MySQL 5.0不能使用自动增加字段问题

解决MySQL 5.0不能使用自动增加字段问题

解决MySQL 5.0不能使用自动增加字段问题2010-06-14 赛迪网 问题:MySQL 5.0不能使用自动增加字段。具体原因:引起的原因是在MySQL5.0.2版本中的The Server SQL Mode 中新加了几种 sql_mode,并且在sql的my.ini文件中的sql-mode 默认增加了其中的二种,一个是STRICT_TRANS_TABLES,就是导致auto_increament失败的mode,这个sql_mode主要用于当一个值不能...
<< 171 172 173 174 175 176 177 178 179 180 >>