索引1ps索引是什么意思思

没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Mysql索引概念:说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目录是要占纸张的,而索引是要占磁盘空间的。
Mysql索引主要有两种结构:B+Tree索引和Hash索引.
MySQL中,只有Memory(Memory表只存在内存中,断电会消失,适用于临时表)存储引擎显示支持Hash索引,是Memory表的默认索引类型,尽管Memory表也可以使用B+Tree索引。hsah索引把数据的索引以hash形式组织起来,因此当查找某一条记录的时候,速度非常快。当时因为是hash结构,每个键只对应一个值,而且是散列的方式分布。所以他并不支持范围查找和排序等功能。
B+tree是mysql使用最频繁的一个索引数据结构,是Inodb和Myisam存储引擎模式的索引类型。相对Hash索引,B+树在查找单条记录的速度比不上Hash索引,但是因为更适合排序等操作,所以他更受用户的欢迎。毕竟不可能只对数据库进行单条记录的操作。
带顺序访问指针的B+Tree
B+Tree所有索引数据都在叶子结点上,并且增加了顺序访问指针,每个叶子节点都有指向相邻叶子节点的指针。这样做是为了提高区间查询效率,例如查询key为从18到49的所有数据记录,当找到18后,只需顺着节点和指针顺序遍历就可以一次性访问到所有数据节点,极大提到了区间查询效率。
大大减少磁盘I/O读取
数据库系统的设计者巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入。
为了达到这个目的,在实际实现B- Tree还需要使用如下技巧:
每次新建节点时,直接申请一个页的空间,这样就保证一个节点物理上也存储在一个页里,加之计算机存储分配都是按页对齐的,就实现了一个node只需一次I/O。
B-Tree中一次检索最多需要h-1次I/O(根节点常驻内存),渐进复杂度为O(h)=O(logdN)。一般实际应用中,出度d是非常大的数字,通常超过100,因此h非常小(通常不超过3)。而红黑树这种结构,h明显要深的多。由于逻辑上很近的节点(父子)物理上可能很远,无法利用局部性,所以红黑树的I/O渐进复杂度也为O(h),效率明显比B-Tree差很多。
1、选择索引的数据类型
MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响。通常来说,可以遵循以下一些指导原则:
(1)越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。(2)简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。(3)尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。2、选择主键类型选择合适的标识符是非常重要的。选择时不仅应该考虑存储类型,而且应该考虑MySQL是怎样进行运算和比较的。一旦选定数据类型,应该保证所有相关的表都使用相同的数据类型。(1)&& &整型:通常是作为标识符的最好选择,因为可以更快的处理,而且可以设置为AUTO_INCREMENT。
(2)&& &字符串:尽量避免使用字符串作为标识符,它们消耗更好的空间,处理起来也较慢。而且,通常来说,字符串都是随机的,所以它们在索引中的位置也是随机的,这会导致页面分裂、随机访问磁盘,聚簇索引分裂(对于使用聚簇索引的存储引擎)。
Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引
PRIMARY KEY(主键索引)&&ALTER TABLE `table_name` ADD PRIMARY KEY ( `col` )&
UNIQUE(唯一索引)&& & ALTER TABLE `table_name` ADD UNIQUE (`col`)
INDEX(普通索引) &&& ALTER TABLE `table_name` ADD INDEX index_name (`col`)
FULLTEXT(全文索引) &&& &ALTER TABLE `table_name` ADD FULLTEXT ( `col` )组合索引&& ALTER TABLE `table_name` ADD INDEX index_name (`col1`, `col2`, `col3` )&
Mysql各种索引区别:普通索引:最基本的索引,没有任何限制唯一索引:与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。主键索引:它 是一种特殊的唯一索引,不允许有空值。&全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时好空间。组合索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。创建复合索引时应该将最常用(频率)作限制条件的列放在最左边,依次递减。
组合索引最左字段用in是可以用到索引的,最好explain一下select。
阅读(...) 评论()建筑图纸,两个索引符号挨在一起是什么意思_百度知道
建筑图纸,两个索引符号挨在一起是什么意思
我有更好的答案
【问题解答】是指两个索引符号的建施图都需要仔细查看。【索引符号的用处】一般用索引符号注明画出详图的位置、详图的编号以及详图所在的图纸编号。索引符号和详图符号内的详图编号与图纸编号两者对应一致。按“国标”规定,索引符号的圆和引出线均应以细实线绘制,圆直径为10mm。引出线应对准圆心,圆内过圆心画一水平线,上半圆中用阿拉伯数字注明该详图的编号,下半圆中用阿拉伯数字注明该详图所在图纸的图纸号。如果详图与被索引的图样在同一张图纸内,则在下半圆中间画一水平细实线。索引出的详图,如采用标准图,应在索引符号水平直径的延长线上加注该标准图册的编号。
每年帮助3万考生单招上大学
主营:单招 单独招生 自主招生 高职招考 注册入学 分类考试
适用建施图15页上的15及16两个大样。
建施图纸15-15、15-16,2处节点详图
详细要看建施图图序号|6一5,16一6。
就是两个节点都要看
岂不是两个节点重合了
其他2条回答
为您推荐:
其他类似问题
建筑图纸的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。数据库索引是什么意思 干什么 请说的通俗一点 谢谢_百度知道
数据库索引是什么意思 干什么 请说的通俗一点 谢谢
我有更好的答案
给字段建立索引就是告诉数据库说,这个字段我以后可能会经常查询,我需要快点找到我所需的记录。于是乎,数据库拿来一个小本,专门给这字段按某种规则来来排序,并可能是先划分若干个区间,方便具体的查询定位。因为这种要求,数据库的插入,删除等操作都有可能需要更新索引。--这是我的理解。
采纳率:29%
来自团队:
索引就好比书的目录 (如新华字典) 找字 &你& (字母查找) 肯定是找目录 &N&开头的啥 不可能一页一页的找 很通俗了吧 记得以后提问带点分
为您推荐:
其他类似问题
您可能关注的内容
数据库索引的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。很多人对索引都没有一个清晰的认识,对于聚集索引和非聚集索引之间的区别也不是很清楚。如果有人问我索引是什么,我觉得这个问题有点大,很难在一篇文章里解释清楚。所以我决定尝试写这一系列文章,用一个简单的,可以理解的方法解释索引,尽管网上关于索引的文章有一箩筐那么多。
简单来说,索引帮助数据库引擎使用最小的资源,最高效的找到需要的数据。通过唯一列索引可以保证数据的连贯性,当索引不一定要建在唯一列上。在忙碌的系统里,通过增加并发操作,可以提高性能。在一个表上建立的各个索引可以满足不同用户的请求,但这也是个头疼的问题。索引保存在不同的页,就像数据存在不同的地方,SQL Server要保证它们的一致性。对表的任何INSERT,UPDATE,DELETE操作,对应的索引页会执行相同的操作。索引帮助我们提高获取数据的性能,但对DML操作却是个麻烦。在DELETE和UPDATE里,索引会帮助数据库引擎找到需要修改的记录。一个表要建多少个索引并没有诀窍(thrumb rule)。如果你要更好的读性能,你可以创建更多的索引,如果你要更好DML操作性能,请保持最小数量的索引。
SQL Server支持2类索引:
聚集索引(Clustered Index:CI)
非聚集索引(Non Clustered Index:NCI)
让我们用现实生活中的例子来理解这2类索引。假设你的邻居到你家,问你&Woody Tu&的电话号码。在这种情况下,电话本目录就是个聚集索引。你打开电话本目录,跳过3/4的页,假定他的名字应该出现在目录的最后一部分。在前后翻过几页后,你找到了列有&Woody Tu&名字的页。现在你就可以把号码告诉你的邻居了。看看这里发生了什么?当你找到了列有&Woody Tu&名字的页时,你就有了你邻居(客户端)需要的信息。
我们再看另一个情况,你的邻居到你家,问你&Woody Tu&的电子邮件地址,而你并不记得。在这个情况下,电话本目录会扮演非聚集索引的角色。你打开电话本目录,跳过3/4的页,假定他的名字应该出现在目录的最后一部分。在前后翻过几页后,你找到了列有&Woody Tu&名字的页。现在你可以打电话给&Woody Tu&,问下他的电子邮件地址是多少。挂下电话后,你可以把他的电子邮件地址交给你的邻居。看看这里发生了什么?当你找到了列有&Woody Tu&名字的页时,你并没有邻居(客户端)需要的信息。你需要去做一个额外操作(打电话)来获得邻居(客户端)需要的信息。在SQL Server里,这个额外操作被称为书签/RID查找(Bookmark or RID Lookup,注:RID,堆的行标识符(FileID:PageID:SlotNumber))。
希望这个介绍可以让你对聚集索引和非聚集索引有了感性的认识。在接下来的文章里,我们会讨论聚集索引和非聚集索引的更多细节。
参考文章:
阅读(...) 评论()

我要回帖

更多关于 索引的网页是什么意思 的文章

 

随机推荐