Foxtable(狐表)用户栏目专家坐堂 → SQL查询加索引优化速度


  共有3558人关注过本帖树形打印复制链接

主题:SQL查询加索引优化速度

美女呀,离线,留言给我吧!
漂亮美眉vszh
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:876 积分:7911 威望:0 精华:0 注册:2013/5/30 11:27:00
SQL查询加索引优化速度  发帖心情 Post By:2021/4/29 10:45:00 [只看该作者]

老师,这个存储过程在数据库内执行是0.1秒都不到,绑到窗口上,耗时7秒多,会卡,

数据库上加了索引,索引去掉了排序

CREATE INDEX OrderMainIndex
ON OrderMain([_Identify],[Cl_PurSaleMold],[Order_ID])

但查询依旧很慢,数据量大后,会比较卡

 

Dim Cmt As String = Args(0)  '存储过程名
Dim Cmt_c As String = Args(1)  '传入的存储过程参数
Dim Tbnm As String = Args(2)  '生成接收表名
Dim FTbnm As Table = Args(3)  '查找表名表头
Dim cmd As new SQLCommand
cmd.Connection Name = "数据库名"
cmd.CommandText = Cmt
cmd.StoredProcedure = True
If Cmt_c <> "" Then
cmd.Parameters.Add("@_IDNo",Cmt_c)
End If
Tables(Tbnm).DataSource  = cmd.ExecuteReader()
Tables(Tbnm).AutoSizeCols()


 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:876 积分:7911 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2021/4/29 10:46:00 [只看该作者]

是SQL语句中去掉了排序,不是索引去掉了,

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:876 积分:7911 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2021/4/29 10:49:00 [只看该作者]

Tables(Tbnm).UseVisualStyle = False
DataTables(Tbnm).SysStyles("EmptyArea").BackColor = Color.White

我发现又加了这些语句,打开窗口长达15秒多,


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107811 积分:548406 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/29 10:59:00 [只看该作者]

查询本身应该不费事,返回的数据多吧,如果还是远程数据库,数据量越大肯定就越慢,慢在网络传输上。在数据库里查询不涉及到数据传输的。

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:876 积分:7911 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2021/4/29 15:19:00 [只看该作者]

以下是引用有点蓝在2021/4/29 10:59:00的发言:
查询本身应该不费事,返回的数据多吧,如果还是远程数据库,数据量越大肯定就越慢,慢在网络传输上。在数据库里查询不涉及到数据传输的。

是的,是远程数据库


 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:876 积分:7911 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2021/4/29 15:20:00 [只看该作者]

有没方法,得到的表分页加载过去


 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107811 积分:548406 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/29 16:01:00 [只看该作者]

在存储过程里使用Row_Number分页,把页码,条数传入存储过程,类似:http://www.foxtable.com/webhelp/topics/2721.htm

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:876 积分:7911 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2021/4/29 16:54:00 [只看该作者]

老师,再问下,照例子加了一个Row_Number,可外面再套了一个SELECT就报错呢,单独测也没问题


图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:222.png
图片点击可在新窗口打开查看


 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107811 积分:548406 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/29 17:01:00 [只看该作者]

没有套对,把原sql发上来

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:876 积分:7911 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2021/4/29 18:24:00 [只看该作者]

se lect * from (Se lect  Row_Number() Over(Order by [_Identify]) As RowNum,*,round(([ResultMoney] - 开piao金额),2) as 未开piao金额,round(([ResultMoney] - 收款金额),2) as 未收款金额 From
 ([dbo].[OrderMain] a left join (se lect Order_ID,round(SUM([TotalTax]),2) as 开piao金额 from [dbo].[InvoDetailed] GROUP BY [Order_ID]) b
  on a._Identify = b.Order_ID) left join (se lect Order_ID,SUM([AmountPay]) as 收款金额 from [dbo].[ReExpend] GROUP BY [Order_ID]) c
  ON a._Identify = c.Order_ID where a.Cl_PurSaleMold = 1 ORDER BY Order_Date desc) as aaa WHERE Row_Number >= 1 And Row_Number <= 10

 回到顶部
总数 17 1 2 下一页