日期:2014-05-18  浏览次数:20815 次

为什么datagridview读 sql 那么慢?
winform 程序,客户端 发送 sql 语句到 sql server 读取到 datatable ,再绑定到 datagridview 数据量有500多条,字段9个,需要30秒才能显示出来。请问正常吗?
求设计思路。

------解决方案--------------------
你把 sql 语句放查询分析器里执行,看看要多少时间
------解决方案--------------------
不正常,
查询时限定了列名没?
数据中有图片、大段文本、附件没?
数据库建了索引没?
用了分层没?
------解决方案--------------------
在正常的网络传输条件下是非常不正常,正常的设计思路是服务端有带条件的sql语句,然后在客户端把参数传过去就好了。然后SQL根据条件查处想要的数据。
------解决方案--------------------
500多条,字段9个,需要30秒 非常不正常。

你把程序放到数据库服务器上运行,如果速度变快很多就是网络问题,否则就是你代码问题。代码问题看前面几楼的方法查就行了。
------解决方案--------------------
探讨
引用:

不正常,
查询时限定了列名没?
数据中有图片、大段文本、附件没?
数据库建了索引没?
用了分层没?


什么都不做也是1-2秒的事情 别说内容多少 就是500多条数据

------解决方案--------------------
探讨
SQL code
SELECT scores_xx.姓名, scores_xx.考号, scores_xx.语文A,语文B FROM scores_xx INNER JOIN User_info ON scores_xx.考号 <= User_info.结束考号 AND scores_xx.考号 >= User_info.起始考号 AND User_info.用户名 ='beixiao……

------解决方案--------------------
SQL code
SELECT     
scores_xx.姓名,
scores_xx.考号, 
scores_xx.语文A,
语文B
 FROM  
scores_xx 
LEFT JOIN User_info 
ON scores_xx.学生ID=User_info.学生ID
AND scores_xx.考号 <= User_info.结束考号 
AND scores_xx.考号 >= User_info.起始考号 
AND User_info.用户名 ='beixiaoyu1'
ORDER BY scores_xx.考号

------解决方案--------------------
我觉得是 因为 INNER JOIN 引起的时间长 请问 这两个表中的数据是不是特别大啊