我在大約1,500行的表的存儲過程中運行一個簡單的SELECT(下面註明)。VB.NET MySqlDataAdapter.Fill大約需要6-7秒
CREATE PROCEDURE `LoadCollectionItemProperty`(IN sId int(10))
BEGIN
SELECT *
FROM itemproperty
WHERE itemid IN
(SELECT itemid
FROM collectionitem
WHERE collectionid = sId AND removed ='0000-00-00 00:00:00');
END
該操作大約需要7秒。我插入斷點並使用F11來確定MySqlAdapter.Fill是滯後時間的起點。我的計算機和託管MySQL數據庫的服務器都不會受到特定的挑戰。我猜這是查詢本身。
collectionitem擁有2個外鍵將itemproperty鏈接到集合。我們提供了sproc sId(集合的PK),以便子查詢返回特定集合中的所有itemid,然後我們在itemproperty中使用itemid(PK)。
有什麼辦法可以加快這個過程嗎?
UPDATE
我的問題完全是由於索引不當。一旦我瞭解了需要索引的列,一切都非常順利!感謝您的幫助。
我不確定要在數據庫中編制什麼索引 – Theveloper
通常,您需要[索引字段](http://dev.mysql.com/doc/refman/5.0/en/create-index.html)在連接或過濾器中。爲了您的需要,我會索引collectionid,itemproperty.itemid,collectionitem.itemid,並將其刪除。 – kirbs