从两个表创建数据集

时间:2013-12-19 06:16:50

标签: sql vb.net datareader

我使用以下代码来创建它。

    Dim tableName(1), queryName(1) As String
    tableName(0) = "donation"
    queryName(0) = "SELECT top 10 * FROM donation"
    tableName(1) = "NorthGangotri"
    queryName(1) = "SELECT  * FROM NorthGangotri  " 



For I As Integer = 0 To UBound(tableName)
Dim Adapter As New SqlClient.SqlDataAdapter
Adapter = objclsDataUtility.GetDataAdeptor(queryString(I))
Adapter.Fill(DataSet, tableName(I))
Next

它工作正常。直到我使用top语句和查询(TOP 5 / TOP 10)。

但是当我删除top语句时,生成报告需要很长的登录时间。我想我做错了什么。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

可能你的桌子非常庞大,而你的所有(*)字段都是你的。 也许如果您已经拥有那么多条目,则应该将查询限制为仅需要的字段,而不是所有字段。 IO是一个很大的数据库/网络瓶颈。

此外,如果您的语句中有任何联接,也许您没有设置外键,如果表中有许多条目,这将使查询速度极慢。

除此之外,如果你在网站上加载一个表,如果你有超过appx,它在Internet Explorer中会变得非常慢。 20行。然后,实际上包括视图状态的数据显示和数据传输可能花费很长时间。关闭viewstate(如果您使用Web表单),并使用分页或虚拟渲染(AJAX,例如SlickGrid)。

DECLARE @start integer 
DECLARE @end integer 

SET @start = 1 
SET @end = 20 

;WITH CTE AS
(
     SELECT 
             YOUR_TABLE.*
            ,ROW_NUMBER () OVER ORDER BY YOUR_TABLE.fieldXXX ASC) AS rn 
     FROM YOUR_TABLE
)

SELECT * FROM CTE 
WHERE rn BETWEEN @start AND @end