楼主: xzh2000

[精华] 祝賀SQL版現在高手云聚﹐開個擂台賽如何﹖有問題直管進來﹐1個小時內解決。

[复制链接]
论坛徽章:
105
萤石
日期:2014-04-06 09:24:42天枰座
日期:2015-07-22 11:25:542014年世界杯参赛球队: 阿尔及利亚
日期:2014-07-10 09:12:26马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11
191#
发表于 2003-12-13 15:29 | 只看该作者

大师:

那么请教一下:table类型的变量如何使用?
能简单介绍一下么。
联机帮助的内容太简单了!

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
66
ITPUB元老
日期:2005-07-16 18:49:11授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44现任管理团队成员
日期:2011-05-07 01:45:08版主3段
日期:2012-05-15 15:24:11
192#
 楼主| 发表于 2003-12-13 15:50 | 只看该作者
TABLE有取代臨時表的意思,但目前它的功能還不夠強大,
但一般情況使用TABLE變量優于使用臨時表,因為TABLE實
際上是內存表,臨時表會在DISK上創建,DISK I/O卻是最慢的

declare @t table(id int,name varchar(20))
insert into @t values(1,'abc')
insert into @t values(2,'def')
select * from @t

create proc up_1
as
begin
        declare @t table(id int,name varchar(20))
        insert into @t values(1,'abc')
        insert into @t values(2,'def')
        select * from @t
end
go
create proc up_2
as
begin
        create table #t(id int,name varchar(20))
        insert into #t values(1,'abc')
        insert into #t values(2,'def')
        select * from #t
end

exec up_1
go
exec up_2

如果小量記錄是效率是一樣的,
但如何大量記錄臨時表就差了.
但昨時表要比TABLE變量的功能
強一些.
INSERT INTO #t EXEC up_1   OK
INSERT iNTO @t EXEC up_1  ERROR

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
66
ITPUB元老
日期:2005-07-16 18:49:11授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44现任管理团队成员
日期:2011-05-07 01:45:08版主3段
日期:2012-05-15 15:24:11
193#
 楼主| 发表于 2003-12-13 15:52 | 只看该作者
Inline Table-valued Functions

CREATE FUNCTION [ owner_name. ] function_name
    ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] )

RETURNS TABLE

[ WITH < function_option > [ [,] ...n ] ]

[ AS ]

RETURN [ ( ] select-stmt [ ) ]

另一個作用是TABLE變量用于表值函數

使用道具 举报

回复
论坛徽章:
105
萤石
日期:2014-04-06 09:24:42天枰座
日期:2015-07-22 11:25:542014年世界杯参赛球队: 阿尔及利亚
日期:2014-07-10 09:12:26马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11
194#
发表于 2003-12-13 16:41 | 只看该作者

谢谢大师

小僧还有一事困惑:
我们公司代理一家软件(简称‘软件’),是用关系型数据库。其中每个月都要记一次库存账。
我通过几个表之间的关系分析写了一个有过个子查询的长的sql,一次性归集本月的收入发出。
而软件则是通过临时表来进行分步的归集。
我归集一次的时间一个月的数据为5秒左右,而软件的时间很长,超过1分钟。
我就纳闷为什么软件程序员要使用临时表!?
前段时间看到观点:子查询只能有限范围地提高速度。数据量过大就不行了。我现在的数据已经达到了13万条,在p4的台式机上运行一次不过23秒。那么如何计算使用子查询和使用临时表之间的分水岭呢?
使用临时表还有什么好处呢?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
66
ITPUB元老
日期:2005-07-16 18:49:11授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44现任管理团队成员
日期:2011-05-07 01:45:08版主3段
日期:2012-05-15 15:24:11
195#
 楼主| 发表于 2003-12-13 16:49 | 只看该作者

Re: 谢谢大师

最初由 wollaston 发布
[B]小僧还有一事困惑:
我们公司代理一家软件(简称‘软件’),是用关系型数据库。其中每个月都要记一次库存账。
我通过几个表之间的关系分析写了一个有过个子查询的长的sql,一次性归集本月的收入发出。
而软件则是通过临时表来进行分步的归集。
我归集一次的时间一个月的数据为5秒左右,而软件的时间很长,超过1分钟。
我就纳闷为什么软件程序员要使用临时表!?
前段时间看到观点:子查询只能有限范围地提高速度。数据量过大就不行了。我现在的数据已经达到了13万条,在p4的台式机上运行一次不过23秒。那么如何计算使用子查询和使用临时表之间的分水岭呢?
使用临时表还有什么好处呢? [/B]


        如果客戶的服務器不錯,不管多大量的數據,子查詢肯定優于臨
時表,子查詢在內存中操作,臨時表要進行DISK I/O,臨時表的好處就
在于它簡化了SQL語句的編寫.當然,對使用子查詢或使用臨時表,軟件公司一般不會進行硬性規定,程序員想如何干就如何干.

使用道具 举报

回复
论坛徽章:
105
萤石
日期:2014-04-06 09:24:42天枰座
日期:2015-07-22 11:25:542014年世界杯参赛球队: 阿尔及利亚
日期:2014-07-10 09:12:26马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11
196#
发表于 2003-12-13 16:56 | 只看该作者

谢谢

我反对使用临时表!(诞生在内存价格便宜时代的人物的想法)
我对这个公司的程序员使用临时表比较反感。好像是硬性规定,没有模块不使用的。

使用道具 举报

回复
论坛徽章:
0
197#
发表于 2003-12-15 10:08 | 只看该作者

复制出现"复制主键重复错”,

从sql server 复制到sql server,,复制表中有有长text列,就是一篇文章,所以复制时总出错"复制主键重复错”,请问怎么解决?

使用道具 举报

回复
论坛徽章:
0
198#
发表于 2003-12-15 10:12 | 只看该作者

复制出现"复制主键重复错”,

从sql server 复制到sql server,,复制表中有有长text列,就是一篇文章,所以复制时总出错"复制主键重复错”,请问怎么解决?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
66
ITPUB元老
日期:2005-07-16 18:49:11授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44现任管理团队成员
日期:2011-05-07 01:45:08版主3段
日期:2012-05-15 15:24:11
199#
 楼主| 发表于 2003-12-15 12:26 | 只看该作者
由于MSSQL對于大的TEXT與VARCHAR等用了兩種不同的方式處理,
所以報錯是正常的,通常的做法是用程序來解決TEXT\IMAGE這類大
對象的處理.

使用道具 举报

回复
论坛徽章:
0
200#
发表于 2003-12-16 11:40 | 只看该作者
交换机三层上 或者路由器上 防火墙上是否做了访问控制列表
封了1433端口,我这里就是这样 年初为了预防病毒关了现在还没有开
你用delphi 的话 用MIDAS 可以使用开放的端口


最初由 wangyuzhen 发布
[B]急!SQLSERVER2000不能跨网段访问
系统环境:Windows2000Server中文版+SP4,MSSQL2000中文企业版。客户机通过光缆+交换机访问数据库服务器,我的开发机和数据库服务器在同一网段,而客户机和我们在不同网段。
安装的时候我没有选择默认实例名,而是自己命名了一个实例。现在客户机不能访问数据库,但是能ping通。网络应该说是正常的,跨网段能够访问共享文件夹什么的。而另外一个服务器上的使用默认实例,没有问题。 sqlserver打了sp3补丁,在我的开发机的sql企业管理器里用“IP地址\实例名”能访问到数据库
请各位看看是什么问题造成的? [/B]

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表