1.主外键表中,外键表中是否还需要把跟主表有关系的字段设置成索引。比如表A(主表)[Customerid(主键),customername],表B[billno(主键),customerid,billdate........] 表A中的Customerid = 表B中的Customerid,数据库中也设置了此关系。试问这样的话表B中的Customerid还需要设置索引吗?
调试欢乐多
--查询1:
SELECT *
FROM B
INNER JOIN A
ON B.customerid = A.customerid
WHERE B.billdate BETWEEN '20110121' AND '20110121 23:59:59'
--查询2:
SELECT *
FROM B
INNER JOIN A
ON B.customerid = A.customerid
WHERE A.customerid = 'c001' -- 等价于 WHERE B.customerid = 'c001'
--查询3:
SELECT *
FROM B
INNER JOIN A
ON B.customerid = A.customerid
WHERE A.customername = 'Bill Gates'
这三个查询性质是不一样的。LZ看一下执行计划。对于查询1,B.customerid上有没有索引无所谓,B.billdate上有索引可以提升效率。
对于查询2和3,B.customerid上最好有索引。