Foxtable(狐表)用户栏目专家坐堂 → SQL哪种比较有效率?


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

主题:SQL哪种比较有效率?

帅哥哟,离线,有人找我吗?
mamuaiqing
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
SQL哪种比较有效率?  发帖心情 Post By:2013/10/16 15:14:00 [只看该作者]

以下两种代码中,同样是查找指定条件数据,在面对很多数据的时候哪种比较有效率?

一,直接后台查询

Dim cmd As New SQLCommand
Dim
nm As String  = "贺辉"
cmd
.ConnectionName = "User"
cmd.CommandText =
"Select Count(*) From {Users} Where Name = '" & nm & "'"
If
cmd.ExecuteScalar > 0 Then
    Messagebox.Show(
"已经存在同名用户","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

 

Dim cmd As New SQLCommand
    Dim
dt As
DataTable
   
Dim dr As DataRow = e.DataRow
    cmd.ConnectionName =
"行政区域"
    cmd.CommandText =
"SELECT * From {行政区域} Where [省市] = '" & dr("省市") & "' And [县市] = '" & dr("县市") & "'"
    dt = cmd.ExecuteReader


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/16 15:21:00 [只看该作者]

没看懂你的意思?   两个是完全不同的情况啊!

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/10/16 15:22:00 [只看该作者]

两者不具可比性,第一个返回一个数值,第二个返回一个表。

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/10/16 16:32:00 [只看该作者]

确实没什么可比性。

数据量低的时候,更加没有任何区别。(0.0几秒,对人来说有区别吗?)


 回到顶部
帅哥哟,离线,有人找我吗?
mamuaiqing
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2013/10/16 19:22:00 [只看该作者]

汗,老毛病又犯了,没把事例搞清楚,重新改下代码

一,

Dim cmd As New SQLCommand
Dim
nm As String  = "贺辉"
cmd
.ConnectionName = "User"
cmd.CommandText =
"Select Count(*) From {Users} Where Name = '" & nm & "'"
If
cmd.ExecuteScalar > 0 Then
    Messagebox.Show(
"已经存在同名用户","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

二,

    Dim cmd As New SQLCommand

    Dim nm As String  = "贺辉"
    Dim
dt As
DataTable
    cmd.ConnectionName = "Users"
    cmd.CommandText =
"SELECT * From {Users} Where [Name] = '" & nm & "'"
    dt = cmd.ExecuteReader

    If dt.DataRows.Count > 0 Then
      Messagebox.Show("已经存在同名用户","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If

 

在很多数据的情况下哪个比较有效率


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/10/16 19:39:00 [只看该作者]

 呵呵,明显是方法一的效率快。方法二,多了一个把表拷贝回来的过程。

 回到顶部