标题:關於查詢速度的問題?
只看楼主
xu2000
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:51
帖 子:3890
专家分:56
注 册:2006-4-8
得分:0 
但我觉得用存储过程做查询的话,速度快到哪到。

我会拿出我全部的钱财,以保你衣食无忧。我会献出我所有的智慧,以助你一帆风顺。我会想到所有的笑语,以令你展眉开颜。我会挤出最长的时间,以使你终生幸福。        [本人原创的结婚宣言]
2007-01-01 01:21
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
得分:0 
优化的东西基本没搞过,寒假学学

26403021 sql群 博客 blog./user15/81152/index.shtml
2007-01-01 10:32
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 
以下是引用jinyuzhang在2007-1-1 0:50:47的发言:
多线程中同时执行一个大的存储过程的话
这样不是相当于并发,要考虑同步吧

是这样的,procedure已经嵌在SQL2000里面,同步如果是单线程就是同步了

多线程就算同步也是死锁,而且如果用互斥的话就失去多线程的意义,所以多线程下一般直接用SQL语句


就算一条线程使用独立的一条连接,但是到数据库调用procedure的时候仍然是共用同一个

所以是并发的问题。

2007-01-01 18:56
ninggang
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:637
专家分:0
注 册:2006-11-1
得分:0 
看来这里衍生的知识倒是挺宽的嘛,在这里我建议live41能够将这方面的知识拓展一下吗?让大家都能够认识到存储过程在单线程,多线程方面的利弊,以及其他个方面的知识,哈哈,谢谢

大家一起努力,共同打造未来!!
2007-01-01 22:55
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 
我要发表的都发表完了,反正多线程就算用多条连接connection,也仍然是共用同一个procedure,就这么多了

线程建议用SQL语句来直接查询就罢,而且判断大可以在程序代码而不必一定要在procedure,除非特殊情况(我遇到特殊情况是关于VPN的)

至于说procedure比用SQL语法快得多的说法,我认为是垃圾说法。

要的话可以写个例子测试一下,别人云亦云

2007-01-02 11:15
WithFh
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-12-4
得分:0 
這就是我的查詢內容,比較多,確實不知道怎麼寫存儲過程
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rs1 As New ADODB.Recordset
Dim SQL As String
Dim SQL1 As String
Dim count2 As Double '未交貨數量
conn.Open ConnectionString
SQL = "select OrderNo,CaseNo,TrustCaseNo,PlanDate,BookAmount from T01_ORDER_DTLS where OrderNo in (Select OrderNo from T01_ORDERS where Status ='2' or Status='1') and Status<>'E' order by PlanDate,CaseNo"
rs.Open SQL, conn, adOpenForwardOnly
LV.ListItems.Clear
While Not rs.EOF

LV.ListItems.Add , , IIf(IsNull(rs("CaseNo")), "", rs("CaseNo"))
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs("PlanDate")), "", rs("PlanDate"))
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs("BookAmount")), 0, rs("BookAmount"))
count2 = 0#
SQL1 = "select SUM(Pieces)as count1 from T13_OUTGOODS_DTLS where OutgoodNo in(Select OutgoodNo from T13_OUTGOODS where Status='E' and OrderKey='" & rs("OrderNo") & "') and CaseNo='" & rs("CaseNo") & "'"
rs1.Open SQL1, conn, adOpenForwardOnly
' SQL1 = "OutgoodNo in(Select OutgoodNo from T13_OUTGOODS where Status='E' and OrderKey='" & rs("OrderNo") & "') and CaseNo='" & rs("CaseNo") & "'"
' rs1.Find SQL1
If Not rs1.EOF Then
count2 = rs("BookAmount") - IIf(IsNull(rs1("count1")), 0, rs1("count1"))
End If

Set rs1 = Nothing
SQL1 = "Select BackAmt from T13_BACKGOOD_DTLS where OrderKey='" & rs("OrderNo") & "' and CaseNo='" & rs("CaseNo") & "'"
rs1.Open SQL1, conn, adOpenForwardOnly
If Not rs1.EOF Then
count2 = count2 + IIf(IsNull(rs1("BackAmt")), 0, rs1("BackAmt"))
End If
Set rs1 = Nothing

LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , count2
' If count2 = 0 Then MsgBox rs("OrderNo"), vbExclamation, count2
SQL1 = "select Stocks from T12_STOCKS where CaseNo='" & rs("CaseNo") & "'"
rs1.Open SQL1, conn, adOpenForwardOnly
If rs1.EOF Then
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , 0
Else
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs1("Stocks")), 0, rs1("Stocks"))
End If
Set rs1 = Nothing
SQL1 = "select SUM(Pieces)as count from T13_OUTGOODS_DTLS where OutgoodNo in(Select OutgoodNo from T13_OUTGOODS where Status<>'E' and OrderKey='" & rs("OrderNo") & "') and CaseNo='" & rs("CaseNo") & "'"
rs1.Open SQL1, conn, adOpenForwardOnly
If Not rs1.EOF Then
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs1("count")), 0, rs1("count"))
Else
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , 0
End If
Set rs1 = Nothing
SQL1 = "select OrderNum from T01_ORDERS where OrderNo='" & rs("OrderNo") & "'"
rs1.Open SQL1, conn, adOpenForwardOnly
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs1("OrderNum")), "", rs1("OrderNum"))
Set rs1 = Nothing
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs("TrustCaseNo")), "", rs("TrustCaseNo"))
SQL1 = "select CustomNo,CustomName from T01_ORDERS where OrderNo='" & rs("OrderNo") & "'"
rs1.Open SQL1, conn, adOpenForwardOnly

LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs1("CustomNo")), "", rs1("CustomNo"))
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs1("CustomName")), "", rs1("CustomName"))

Set rs1 = Nothing

SQL1 = "select MoldName from T01_CUSTOM_MOLDS where CaseNo='" & rs("CaseNo") & "'"
rs1.Open SQL1, conn, adOpenForwardOnly
If Not rs1.EOF Then
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs1("MoldName")), "", rs1("MoldName"))
Else
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , ""
End If
Set rs1 = Nothing

SQL1 = "select SUM(Pieces)as count1 from T13_OUTGOODS_DTLS where OutgoodNo in(Select OutgoodNo from T13_OUTGOODS where Status='E' and OrderKey='" & rs("OrderNo") & "') and CaseNo='" & rs("CaseNo") & "'"
rs1.Open SQL1, conn, adOpenForwardOnly
If Not rs1.EOF Then
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs1("count1")), 0, rs1("count1"))
Else
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , 0
End If
Set rs1 = Nothing

SQL1 = "select Address,Liaisons from T01_ORDERS where OrderNo='" & rs("OrderNo") & "'"
rs1.Open SQL1, conn, adOpenForwardOnly

LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs1("Address")), "", Trim(rs1("Address")))
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rs1("Liaisons")), "", Trim(rs1("Liaisons")))

Set rs1 = Nothing
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , "訂單"
LV.ListItems(LV.ListItems.Count).ListSubItems.Add , , rs("OrderNo")
rs.MoveNext
Wend
Set rs = Nothing
labCT.Caption = LV.ListItems.Count
Set conn = Nothing
2007-01-02 22:09
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
你这也太吓人了吧?
你只需要把数据表中的字段(还有结构)+你要实现什么样的功能写出来就行了.

飘过~~
2007-01-02 23:58
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
得分:0 
create procedure查一下帮助就会写了,里面自带例子

26403021 sql群 博客 blog./user15/81152/index.shtml
2007-01-03 00:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-113244-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.124716 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved