我使用以下代码来创建它。
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语句时,生成报告需要很长的登录时间。我想我做错了什么。任何人都可以帮助我吗?
答案 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