2011-11-29 74 views
0

我在VB 2008中編碼將數百萬條記錄快速插入數據庫和搜索

假設我以某種方式擁有數百萬個字符串。 這些必須在數據庫中插入「一次」,只有一個表只有1列。 然後在某個時間點,我需要在數據庫中搜索特定的字符串。

Q1。我怎樣才能讓插入更快?

它是一次性插入,即我只需要插入一次。無需更新。 我嘗試將字符串集合分爲五個,並使用5個線程同時插入數據。 [RAM和CPU使用率不關心條件]。但它仍然無效。 Q2302。我怎樣才能更快地搜索?

現在,我只是查詢數據庫一樣

select column1 from table1 where column1 like 'something' 

聽說有更好的搜索技術。 你認爲你可以建議在我的數據庫中搜索最好的技術嗎?

Q3。目前我正在使用ADODC。 [mdb文件]

我應該遷移到MySQL,SQLite什麼的?

謝謝!

+1

你爲什麼使用LIKE?你打算支持通配符嗎?你會做什麼樣的通配查詢? –

+0

如果RDMBS(和SQL操作)可以處理它,更多的客戶端(線程)只會更快;-)確保您只在最後提交ONCE。 – 2011-11-29 18:26:15

+0

如果一次性導入;爲什麼不使用Access導入功能? – xQbert

回答

4

Q1:您可以使用SqlBulkCopy類在一個表中插入大量數據。 Q2:確保您在搜索的列上有適當的索引。如果使用LIKE '%searchterm進行搜索(開頭爲%),則可以在使用全文搜索時提高搜索性能。

+0

是不是用於將批量數據從一個源複製到另一個源的SqlBulkCopy類?我想我應該提到用戶提供了要插入的數據,並且通常不會成爲源代碼。謝謝回覆! –

+1

您可以將所有輸入的用戶字符串放入DataTable中,並使用['WriteToServer(DataTable)'](http://msdn.microsoft.com/en-us/library/ex21zs8x.aspx)過載。或者你可以實現['IDataReader'](http://msdn.microsoft.com/en-us/library/system.data.idatareader.aspx)接口。 –

相關問題