【发布时间】:2013-03-11 21:54:30
【问题描述】:
当我们在属性上创建索引时,我们会更快地找到记录,因为索引是一棵树,并且我们会浏览按排序顺序排列的值。
例如。对于 SELECT * from branches where name='Washington 通过索引,我们将按字典顺序导航以到达日志时间的记录。
但是,当我们对连接中使用的列进行索引时,这是如何工作的呢?
例如。
SELECT BILLS.NAME NAME, BILLS.AMOUNT AMOUNT FROM BILLS,BANK_ACCOUNTS WHERE BILLS.ACCOUNT_ID = BANK_ACCOUNTS.ACCOUNT_ID
如果我们为BILLS(ACCOUNT_ID) 和BANK_ACCOUNTS(ACCOUNT_ID) 创建了一个索引,那么导航如何更快?我们只取BANK_ACCOUNTS.ACCOUNT_ID 的每个值并使用BILLS 的索引树来查找匹配记录?
如果这是它的工作原理,那么为什么人们通常建议在连接中使用的列中创建索引。
在我看来,只创建了 1 个索引,这将用于相等比较器左侧的表,即BILLS。还是我错了?
【问题讨论】:
-
你应该阅读all of this - 特别是加入操作部分。
标签: mysql sql performance join indexing