0

我已经使用 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 吗?

4

2 回答 2

0

在某些情况下,请尝试使用 LEFT JOIN 而不是 INNER JOIN。希望它有帮助!

于 2013-10-28T16:41:52.713 回答
0

正确索引所有表格。Cluster Index 最重要的字段(似乎在 tblTag 中为 CustomerID,在 tblCustomer 中为 ID),并在 tblTag 中的 TagID 上放置一个常规索引。

于 2013-10-28T17:57:30.437 回答