浅议MYSQL之优化与索引.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅议MYSQL之优化与索引 华迪教育 华迪信息 1.优化与索引 提升选择操作性能的最佳方法是创建一个或多个索引在查询中测试的列。索引的作用类似于数据行里的指针,使得此查询能够快速判定哪些行能够匹配where子句中的条件,同时为其他行检索其列值。所有的MYSQL数据类型都可以被索引。 虽然很容易为查询中的每一列创建一个索引,但由于MYSQL选取索引会浪费空间及时间,所以没必要如此。因此你必须找到恰当的平衡点,以实现快速查询时使用最佳指标集。 1.1选择索引数据类型 索引被用来快速查找特定值的行。如果没有索引,MYSQL必须先从第一行开始,然后通过整个表来查找相关行。表越大,代价也就越高。如果表有列的索引,MYSQL就能快速确定行在数据文件中的位置,而不必查看所有数据行。如果一个表有1000行,索引的速度至少比顺序读取快100倍。 选择索引的数据类型原则 越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MSQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MSQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或一个空串代替空值。CREATE TABLE People ( ???last_name?varchar(50)??? not null, ???first_name varchar(50)??? not null, ???dob??????? date?????????? not null, ???gender???? enum(m, f) not null, ???key(last_name, first_name, dob) ); 其索引包含表中每一行的last_name、first_name和dob列。其结构大致如下: 索引存储的值按索引列中的顺序排列。可以利用B-Tree索引进行全关键字、关键字范围和关键字前缀查询,当然,如果想使用索引,你必须保证按索引的最左边前缀(leftmost prefix of the index)来进行查询。由于B-树中的节点都是顺序存储的,所以可以利用索引进行查找(找某些值),也可以对查询结果进行ORDER BY。MYSQL中,只有Memory存储引擎显示支持hash索引,是Memory表的默认索引类型,尽管Memory表也可以使用B-Tree索引。Memory存储引擎支持非唯一hash索引,这在数据库领域是罕见的,如果多个值有相同的hash code,索引把它们的行指针用链表保存到同一个hash表项中。假设创建如下一个表:CREATE TABLE te 或 四川华迪信息

文档评论(0)

___________ + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档