以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SQL哪种比较有效率?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=41312)

--  作者:mamuaiqing
--  发布时间:2013/10/16 15:14:00
--  SQL哪种比较有效率?

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

一,直接后台查询

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
--  发布时间:2013/10/16 15:21:00
--  
没看懂你的意思?   两个是完全不同的情况啊!
--  作者:狐狸爸爸
--  发布时间:2013/10/16 15:22:00
--  
两者不具可比性,第一个返回一个数值,第二个返回一个表。
--  作者:jspta
--  发布时间:2013/10/16 16:32:00
--  

确实没什么可比性。

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


--  作者:mamuaiqing
--  发布时间: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

 

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


--  作者:有点甜
--  发布时间:2013/10/16 19:39:00
--  
 呵呵,明显是方法一的效率快。方法二,多了一个把表拷贝回来的过程。