SELECT *
FROM
tbl_transaction t
LEFT JOIN
tbl_transaction_hsbc ht
ON
t.transactionid = ht.transactionid
transactionid
两个表上都是主键,那么为什么没有索引搜索?
SELECT *
FROM
tbl_transaction t
LEFT JOIN
tbl_transaction_hsbc ht
ON
t.transactionid = ht.transactionid
transactionid
两个表上都是主键,那么为什么没有索引搜索?
也许是 SELECT * ... 并且可能因为您要返回整个表,所以寻找没有任何优势。你想要一个 seek 做什么,逐步搜索每一行?扫描效率更高。
我知道您可能已经阅读或被告知要不惜一切代价避免扫描。我认为需要有更多与此相关的上下文。有时扫描是正确的答案,也是获取数据的最有效途径。如果查询很慢,也许您可以显示一个实际的执行计划,我们可以帮助查明问题。但答案不会强制此查询使用搜索。
没有索引搜索,因为您没有 where 子句。索引查找意味着您检查索引中的一系列值。由于您没有 where 子句,因此除了扫描所有索引值之外别无选择。所以得名“索引扫描”。
这不是表扫描,而是索引扫描。如果您在其中一个表中的此列上没有索引,您将对第二个表进行表扫描 + 对第一个表进行索引扫描。