2015-01-09 83 views
0

我想通過創建10個表格並插入大量數據來創建博客問題在於,這項工作適合創建少量博客,但如果我們要創建1500,它的工作方式就像是一隻蝸牛。加速執行查詢.net

private void createBlog_Click(object sender, EventArgs e) 
    { 
     for (int i = 0; i < Blogs_dataGridView.RowCount; i++) 
     { 
     bool IscommentCreated = MySQL.CreateComments(blogList); 
     if (IscommentCreated) 
     { 
      MySQL.InsertIntoComments(blogList); 
     } 
     //===========Part2========================================= 
     MySQL.Createlinks1(blogList); 
     MySQL.Createlinks2(blogList); 
     MySQL.Createlinks3(blogList); 
     MySQL.Createoptions(blogList); 
     MySQL.InsertIntooptions(blogList, mail, getePermalink()); 
     //other tables are inserted here 
     } 
    } 

我試圖創建工會​​的許多步驟之間,這加速執行點點,但不會太多

我怎樣才能加快執行?

+0

我不明白你在問什麼。你是否爲每個博客創建10個表格? – Mitch

+0

你可以分享你試過的嗎? :) –

+0

@Mitch是的確切這就是我的意思 – Miral

回答

0

在使用ADO.NET不重用IDbCommand對象一個常見的錯誤:

public class X 
{ 
    public void PerformQuery(...) 
    { 
     using (MySqlCommand cmd = conn.CreateCommand()) 
     { 
      // create parameters and parameter values 
      cmd.ExecuteNonQuery(); 
     } 
    } 
} 

相反,它可能看起來有點像這樣:

public class X : IDisposable 
{ 
    public MySqlCommand cmdInsertThings; 
    public MySqlCommand cmdInsertOtherThings; 
    public bool disposed; 

    public X(MySqlConnection c) 
    { 
     cmdInsertThings = c.CreateCommand(); 
     // create parameters 
     cmdInsertOtherThings = ... 
    } 

    public void PerformQuery(...) 
    { 
     // assign parameter values 
     cmdInsertThings.ExecuteNonQuery(); 
    } 

    public void Dispose() 
    { 
     if (disposed) return; 
     disposed = true; 
     cmdInsertThings.Dispose(); 
    } 
} 

(當然你必須保持MySqlConnection在整個操作過程中開放,我假設你已經這麼做)