0
我正在開發一個需要從mysql表大量讀取的c#應用程序。查詢看起來是這樣的:從多線程的mysql表中讀取
SELECT ID3 FROM A INNER JOIN B
USING (ID1)
INNER JOIN C
USING (ID2)
INNER JOIN D
USING (ID3)
WHERE ID3 > @Start AND ID3 <= @End
GROUP BY ID3
HAVING SOME CONDITION
由於該表是巨大的我嘗試創建20個線程,他們每個人的執行查詢與
WHERE ID3 % 20 = i AND ID3 > @Start AND ID3 <= @End
取代
WHERE ID3 > @Start AND ID3 <= @End
。
但是,運行此多線程應用程序不會導致程序更快。我做了一些分析,發現這些線程大部分時間都處於空閒狀態,所以我猜想在mysql表中存在一定的鎖定,以防止多個線程訪問它們。
我也嘗試過「髒讀」,包圍我的查詢與下面的語句:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
...
COMMIT;
但是,它似乎並沒有帶來任何的加速。
任何人都可以幫忙嗎?