SELECT *
FROM
tbl_transaction t
LEFT JOIN
tbl_transaction_hsbc ht
ON
t.transactionid = ht.transactionid
两个表上的 transactionid
是主键,为什么没有索引?
答案 0 :(得分:7)
也许这是SELECT * ...也许是因为你要归还整个桌子,所以没有优势可以寻找。你想要做什么,逐步寻求每一行?扫描效率更高。
我意识到你可能已经阅读或被告知不惜一切代价避免扫描。我认为需要有更多与此相关的背景。有时,扫描是正确的答案,也是最有效的数据路径。如果查询速度很慢,也许您可以显示实际的执行计划,我们可以帮助查明问题。但答案并不是强迫此查询使用搜索。
答案 1 :(得分:0)
没有索引搜索,因为您没有where子句。 索引搜索意味着您检查索引中的一系列值。 由于没有where子句,除了扫描所有索引值之外别无选择。 所以名称为“索引扫描”。
这不是表扫描,而是索引扫描。如果其中一个表中没有此列的索引,则第二个表的表扫描+第一个表的索引扫描。