在数据库中设置主键和索引的目的分别是什么

 我来答
匿名用户
推荐于2018-04-13
展开全部
建立索引是为了不通过存取整张表的数据而是搜索已经排序的索引,然后通过索引的定位到表中快速搜索到你要的条目。主键是唯一索引,可以唯一标识该条目。唯一索引可以有多个,可以称作候选键,主键只有一个。对于一个大型数据表,没有索引是难以想象的。
爱可生云数据库
2021-03-16 · MySQL开源数据库领先者
爱可生云数据库
爱可生,金融级开源数据库和数据云服务整体解决方案提供商;优秀的开源数据库技术,企业级数据处理技术整体解决方案提供商;私有云数据库云服务市场整体解决方案提供商。
向TA提问
展开全部

大部分开发会了解这样的《开发规范》:创建索引要选择区分度高的字段。他们会认为区分度低的字段不适合创建索引或者不适合添加到组合索引里面。但是这样的操作会导致很多慢查。举例来说:

select  * from  tab where a=1 and b=2;

场景 1 

符合 a=1的记录数有 10w 条记录 ,b=2 有 1000 条记录。如果只是创建idx_a(a),sql 请求通过索引idx_a访问 10w 条件记录,然后还要逐一匹配 10w 条记录中的 status,找到符合 b=2的记录。这个动作会导致慢查。如果创建组合索引idx_ab(a,b),sql 请求通过索引idx_ab可以直接定位到 1000 条记录,无需额外的过滤。这样减少访问 9900 条记录的时间,提升查询速度。

场景 2 

符合 a=1的有 100 条记录,status=2 有 10 条记录。其实场景 2 因为数据量比较少,直接访问 100 条记录和定位到 10 条记录的时间消耗相差不大,量变不足以引发质变,可以忽略了。

Tips:

  • 创建索引的目的是通过索引尽可能找到匹配 where 条件的行,减少不必要的回表,提高查询效率;

  • 需要辩证地看待区分度比较低的字段在组合索引中的作用。在组合索引的情况下,我们不能只是单纯地看字段的区分度,而是要看符合条件的记录数是多少。符合条件的记录越少,性能越好。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-21
展开全部
主键的设置方便你查询记录,因为主键可以很简短而记录可能会很长。索引可以在大型的数据量的情况下可以以最快速度查找到你需要的记录。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-21
展开全部
设置主键主要是为了防止数据的重复设置索引如果数据很多的话可以提高查询效率但如果数据并不多建立索引反而会降低查询效率 索引需要占用内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-21
展开全部
主键主要是保证实体的完整性及对表的约束,确保数据的唯一性!
索引主要是加速查询速度!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式