仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1043|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网页编程之数据库主键int型和str型效力对照

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:39:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因此,我们的第一个“米”,就是二进制日志binlog必须是rowbased的。在rowbase下,二进制日志binlog同时记录了更新前后的整行记录。对照|数据|数据库
又看到如许的一段话:

主键用整型会极年夜的进步查询效力,而字符型的对照开支要比整型的对照开支年夜良多,用字符型数据作主键会使数据拔出、更新与查询的效力下降。数据量小的时分这点下降大概不会被注重,但是当数据量年夜的时分,小的改善也可以进步体系的呼应速率。

我做了一个实行,用MSSQL企业办理器创建两张表TInt和TStr,
TInt
{
 intId  int  PRIMARYKEY
 intValue int
}
TStr
{
 strId  varchar(20)  PRIMARYKEY
 strValue varchar(20)
}
往这两张表数据分离为intId=intValue=1~300000,strId=strValue=1~300000。然后用mfc封装的odbc分离实行
intRslt.Open(CRecordset::dynaset,"SELECT*FROMTIntWHEREintId=123456",CRecordset::readOnly);

strRslt.Open(CRecordset::dynaset,"SELECT*FROMTSTRWHEREstrId=123456",CRecordset::readOnly);
一千次。
工夫分离是1392毫秒和1452毫秒

一样实行
intRslt.Open(CRecordset::dynaset,"SELECT*FROMTIntWHEREintValue=123456",CRecordset::readOnly);

strRslt.Open(CRecordset::dynaset,"SELECT*FROMTSTRWHEREstrValue=123456",CRecordset::readOnly);
一千次。
工夫分离是58955毫秒和172227毫秒

假如用MSSqlServer新建一个主键(PrimaryKey),SqlServer默许为它创建一个会萃(CLUSTERED)索引,用会萃索引来定位一个数据必要的对照次数应当是很少的。而拔出大概更新操纵大概招致整行挪动大批数据,但这关于int型和str型主键是一样的。

为何作者会如是说呢?如今我其实不以为把str型主键改成int型是进步数据库效力的关头,比拟利用数据库毗连池大概优化sql语句,这点效力微乎其微。
Archive非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差
冷月葬花魂 该用户已被删除
沙发
发表于 2015-1-19 20:44:05 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-27 06:22:37 | 只看该作者
很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
莫相离 该用户已被删除
地板
发表于 2015-2-5 02:46:28 | 只看该作者
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
若相依 该用户已被删除
5#
发表于 2015-2-11 03:04:07 | 只看该作者
比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
谁可相欹 该用户已被删除
6#
发表于 2015-3-1 20:15:35 | 只看该作者
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
兰色精灵 该用户已被删除
7#
发表于 2015-3-10 23:11:17 | 只看该作者
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
变相怪杰 该用户已被删除
8#
发表于 2015-3-17 15:54:38 | 只看该作者
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
9#
发表于 2015-3-24 10:22:13 | 只看该作者
两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 13:48

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表