在网上找到一个帖,是关于将mysql的sqldatareader转成datatable的。https://blog.csdn.net/zgqtxwd/article/details/2353122
就是不知道效率如何?而且还不知道这个放在FT中,怎么用。
我用的mysql,读取3.3W行数据到FT的表中,用时30秒。这个速度不满意,因为如果使用Sqlserver做外部数据源,然后load,只需要6秒左右。不知道哪里可以优化
DataTables("X").DataRows.Clear
Dim st1 As Date = Date.Now
Dim conn As MySql.Data.MySqlClient.MySqlConnection
Dim cmd As MySql.Data.MySqlClient.MySqlCommand
Dim connStr As String = "server=127.0.0.1; port=3306; user id=root; password=toor; database=CS;CharSet=utf8"
conn = New MySql.Data.MySqlClient.MySqlConnection(connStr)
conn.Open
Dim mda As New MySql.Data.MySqlClient.MySQLDataAdapter("S elect * from X where 自定义条件", conn)
Dim ds As New System.Data.DataSet()
mda.Fill(ds, "TableTemp")
conn.close
output.Show("耗时: " & (Date.Now - st1).TotalSeconds & "秒") ‘这个很快,几乎是秒完
Dim n As Integer = ds.Tables(0).Rows.Count
DataTables("X").AddNew(n)
output.Show("加行耗时: " & (Date.Now - st1).TotalSeconds & "秒") ‘这个速度就有影响了,测试一般要7秒左右
For i As Integer = 0 To n - 1
Dim dr As DataRow = DataTables("X").DataRows(i)
Dim r As System.Data.DataRow = ds.Tables(0).Rows(i)
For Each c As DataCol In DataTables("X").DataCols
dr(c.Name) = r(c.Name)
Next
Next
output.Show("耗时: " & (Date.Now - st1).TotalSeconds & "秒") ‘这个用时太长了,我的电脑上光这一段就要23秒左右。
要是能快速地将ds的数据转到datatables("X")中去,那就很好了。