设为首页 加入收藏

TOP

数据库主键的作用介绍
2017-11-24 10:48:58 】 浏览:238
Tags:数据库 作用 介绍

数据库主键的作用

标签:

数据库

主键

快速

更新

原理

分类: 数据库技术

最近接到一个项目,要求对数据库的数据进行更新。 数据库的表也很简单,结构都是一个的,就是时间+值列表的形式记录测量值的。 数据更新都不是很难,经过计算即可完成。 由于表中有110万多条记录,数据量比较大, 所以数据更新效率太低,更新1440条数据所消耗的时间如下:

【建立主键前】 2013/2/25 8:31:46 Begin... 2013/2/25 8:31:57 199 2013/2/25 8:32:05 399 2013/2/25 8:32:13 599 2013/2/25 8:32:22 799 2013/2/25 8:32:30 999 2013/2/25 8:32:39 1199 2013/2/25 8:32:47 1399 2013/2/25 8:32:49 End. 这里使用的是事务分组方式进行数据更新,200条一组,更新时间花了1分钟多。 开始以为是更新方式有问题,试了多种更新方法,虽然效率有所提高,但是仍然无法接受。 仔细分析了数据库结构发现,原来数据表中没有主键。 主键的作用是:唯一性;提高检索速度; 于是建立了索引,结果同样用开始的方法,结果如下。 【建立主键后】 2013/2/25 8:35:39 Begin... 2013/2/25 8:35:39 199 2013/2/25 8:35:39 399 2013/2/25 8:35:39 599 2013/2/25 8:35:39 799 2013/2/25 8:35:39 999 2013/2/25 8:35:39 1199 2013/2/25 8:35:39 1399 2013/2/25 8:35:39 End. 只用了不到1秒就完成了!

【分析】 为什么建立主键能加快这么多呢?原因如下。 之前更新的时候,更新语句如下: Updata 日常报表1 Set 电流 = 1.2 where 时间= '2012-5-21' 在更新的时候,会从 日常报表1 表中查询 时间 列,由于花有110万条数据,所以查询指定记录的平均次数是55万次!更新1440条数据,就要查询7.92亿次,所以计算量要1分钟左右,很正常。 在建议主键后,会对时间列进行排序,排序后,采用二分搜索法来查询,这样110万次最坏查询到的次数为Log2(1100,000)=24次,即使全按最坏情况考虑,更新1440条记录大约只需要查询3.5万次,难怪只用了不到1秒。

原因找到了,所以更加确认了索引的重要,同时也知道了索引效率的影响幅度。 另外再补充一句,如果主键已经建立,需要对别的列进行快速更新,那么可以对此列建立索引,同样可以达到快速检索的目的。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇使用mysql admin修改mysql数据库.. 下一篇出现ORA-4031错误问题分析及解决..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目