我在连接两个表的查询中遇到了一些问题。它通过桌子的次数远远超过我的预期,我似乎无法找到它为什么会这样做。
我的查询是:SELECT * FROM indexAddress LEFT JOIN indexTx ON indexTx.address_id = indexAddress.id WHERE indexAddress.walletId = '2'
IndexTx包含具有事务的行和具有地址ID(address_id)的字段
IndexAddress包含ID为主键的地址数据。
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra
1 | SIMPLE | indexAddress | NULL | ref | Wallet ID | Wallet ID | 4 | const | 121 | 100.00
1 | SIMPLE | indexTx | NULL | ref | Address ID | Address ID | 4 | indexAddress.id | 23 | 100.00
我的问题是:为什么表运行indexTx 23次而不仅仅是1. 121行是预期的,因为它是预期电子钱包ID的行数,但是23让我感到困惑。
答案 0 :(得分:0)
如果其中一个表有一条带有walletId == 2的记录,则该记录将被复制。
您需要过滤更多数据或使用DISTINCT。