我已经使用ADODB测试了Microsoft Access和Microsoft SQL Compact。
我有一个用于存储客户信息的表tblCustomer
tblCustomer structure
--------------------
ID Name Email Something...
1 ABC ABC@ABC.com Something....
将类别客户分为多种类型的tblTag。例如,富客户:标签ID = 1,债务客户:标签ID = 2。每个客户都可以拥有一个或两个标签。
tblTag structure
--------------------
ID TagID CustomerID
1 1 1
2 2 1
然后我已经为这些表的列ID,TagID,CustomerID添加了索引。
但是当我使用这个查询来获得所有富有的客户时。该查询需要8000毫秒,在tblCustomer中总共有170.000条记录。
Select * from tblCustomer INNER JOIN tblTag on
tblTag.CustomerID=tblCustomer.ID where tblTag.TagID=1
如果我只运行Select * from tblCustomer
,它只需要3000毫秒。当我拿到所有桌子时,它甚至更快。内部联接未按预期运行。当客户可以增长到1.000.000记录并且我不希望每次运行此查询时我的程序发生故障时,8000毫秒对我来说太慢了。那么在创建表格标签时可能是我错了吗?我应该将标签作为Rich(bit)或Debt(bit)这样的列添加到tblCustomer中吗?
答案 0 :(得分:0)
对于某些情况,请尝试使用LEFT JOIN而不是INNER JOIN。希望它有所帮助!
答案 1 :(得分:0)
正确索引所有表格。群集索引最重要的字段(看起来像tblTag中的CustomerID和tblCustomer中的ID),并在tblTag中将TagID放在常规索引中。