MySQL冗余索引替代方案?

MySQL冗余索引替代方案?,mysql,sql,Mysql,Sql,我是MySQL新手,我正在运行这个查询 SELECT item_id,amount FROM db.invoice_line WHERE item_id = 'xxx' OR item_id = 'yyy' ... AND invoice_id IN (SELECT id_invoices FROM db.invoices WHERE customer = 'zzzz' AND transaction_date > DATE_SUB(NOW(), INTE

我是MySQL新手,我正在运行这个查询

SELECT item_id,amount FROM db.invoice_line WHERE item_id = 'xxx'  
OR item_id = 'yyy'
...
AND invoice_id IN 
    (SELECT id_invoices FROM db.invoices 
    WHERE customer = 'zzzz' 
    AND transaction_date > DATE_SUB(NOW(), INTERVAL 6 MONTH)
    AND sales_rep = 'aaa') ORDER BY item_id;
也就是说,从在另一个表中找到外键的表中选择一些列

问题是,我还希望在结果中包含客户名称。但是,在发票行表中找不到客户名称,而是在发票表中找到

虽然我可以在创建和插入表时天真地创建一个重复索引,但我想知道是否有一种SQL方法可以从invoice表中选择适当的行并将其包含在结果集中

如果只是复制数据,性能是否会更好

谢谢,
丹麦

像这样的怎么样

SELECT
    invoice_line.item_id,
    invoice_line.amount,
    invoices.customer_name
FROM db.invoice_line
INNER JOIN db.invoices
    ON invoice_line.invoice_id = invoices.id_invoices
WHERE invoices.customer = 'zzzz'
AND invoices.transaction_date > DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
AND invoices.sales_rep = 'aaa'
AND (invoice_line.item_id = 'xxx' OR invoice_line.item_id = 'yyy')
ORDER BY invoice_line.item_id;

使用表之间的联接来获得结果。

您的问题与添加附加索引无关。看起来,这与添加一个合适的连接来将列添加到SELECT中有关。如果您添加了一些示例数据和所需的输出,这会有所帮助,这里的人可以帮助您构建适当的查询。你能编辑你的问题来提供额外的信息吗?谢谢。:)