Укпукп Керпукп
14 сообщений
#14 лет назад
Почему так медленно работает Microsoft SQL SERVER COMPACT 3.5 SP 2 ???

Вот сделал тестовое приложение:
Public Class Form1

Private Sub TableDataBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TableDataBindingNavigatorSaveItem.Click
Me.Validate()
Me.TableDataBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Database1DataSet)

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'Database1DataSet.TableData' table. You can move, or remove it, as needed.
Me.TableDataTableAdapter.Fill(Me.Database1DataSet.TableData)

End Sub

Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click
Dim InstanceAdapter As New Database1DataSetTableAdapters.TableDataTableAdapter
Dim InstanceAdapterFast As New Database1DataSetTableAdapters.FastTableTableAdapter

InstanceAdapter.ClearQuery()
InstanceAdapterFast.ClearQuery()
Me.TableDataTableAdapter.Fill(Me.Database1DataSet.TableData)
End Sub

Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
If Me.BackgroundWorker1.IsBusy Then
MsgBox("Work")
Else
Me.BackgroundWorker1.RunWorkerAsync()
End If
End Sub

Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim Counter As Integer
Dim InstanceAdapter As New Database1DataSetTableAdapters.TableDataTableAdapter
Dim DataForCell As String
Dim InstanceRandom As New Random

Counter = Me.ToolStripTextBox1.Text
For Key As Integer = 1 To Counter
DataForCell = Key.ToString & InstanceRandom.Next & "qweertyuioplkjhgfdsazxcvbnm0987654321QWERTYUIOPLKJHGFDSAZXCVBNM"
InstanceAdapter.InsertQuery(DataForCell, DataForCell, DataForCell, DataForCell, DataForCell, DataForCell, DataForCell, DataForCell, DataForCell, DataForCell)
Me.BackgroundWorker1.ReportProgress((Key / Counter) * 100)
Next
End Sub

Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
If e.ProgressPercentage < 0 Then
Me.ToolStripProgressBar1.Value = 0
End If
If e.ProgressPercentage > 100 Then
Me.ToolStripProgressBar1.Value = 100
End If
Me.ToolStripProgressBar1.Value = e.ProgressPercentage
End Sub

Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
Me.TableDataTableAdapter.Fill(Me.Database1DataSet.TableData)
End Sub

End Class



Если закоментировать строку вставки данных в базу, то работает моментально...
InstanceAdapter.InsertQuery(DataForCell, DataForCell, DataForCell, DataForCell, DataForCell, DataForCell, DataForCell, DataForCell, DataForCell, DataForCell)



Медленно работает на разных компьютерах с разными виндовсами...
Настроек в программе для SQL Server Compact не делал, сам запрос вставки самый стандартный INSERT INTO TABLE VALUES.....

1000 рядков вставляется секунд 15

Кто-то знает в чем дело? Как настроить?