我在大约 1,500 行的表的存储过程中运行了一个简单的 SELECT(如下所述)。
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 个将 item 属性链接到集合的外键。我们提供 sproc sId(PK of collection),以便子查询返回特定集合中的所有 itemid,然后我们在 itemproperty 中使用 itemid(PK)。
有什么方法可以加快这个过程吗?
更新
我的问题完全是由于不正确的索引。一旦我知道要索引哪些列,一切都非常顺利!感谢您的帮助。