Dea*_*Cat 1 mysql sql mysql-workbench
我有一个像这样的 sql 查询:
Select ah.CODE,
case when ( (t.narration)='' OR (t.narration) is NULL) then concat(isnull(v.nameandaddress,''),' ', (v.remarks)) else (t.narration) end as narration,
v.VOUCHERNO,
case when t.CREDITDEBIT = 1 then t.amount else 0 end as dr_amount,
case when t.CREDITDEBIT = 0 then t.amount else 0 end as cr_amount,
v.issueDate,
ag.NAME ,
ah.name,
(v.remarks)
from voucher v
inner join transactiondetails t on t.tx_voucher_id = v.voucherId and
t.tx_voucher_branch = v.sourceUnit
inner join accounthead ah on t.accounthead_id = ah.ID
inner join accountgroup ag on ag.ID=ah.accountgroup_id
where v.sourceunit=279
and v.issueDate between '2017-04-01 00:00:00' and '2018-01-18 00:00:00'
and v.ISCANCELLED=0
and ah.code in ('1412')
order by ah.name, v.issuedate, v.voucherid
Run Code Online (Sandbox Code Playgroud)
如果我给了表 transactiondetails 的索引,它会帮助这个查询吗?
创建的索引如下所述
CREATE INDEX IDX_transactiondetails_ID_Branch ON transactiondetails
(tx_voucher_id,tx_voucher_branch,accounthead_id) INCLUDE
(narration,CREDITDEBIT,amount)
Run Code Online (Sandbox Code Playgroud)
从上面的索引创建查询中,我们对某些列使用了INCLUDE关键字。现在我需要知道,如何在 MySQL 中创建上述索引创建查询?
尝试这个:
CREATE INDEX IDX_transactiondetails_ID_Branch ON transactiondetails (tx_voucher_id, tx_voucher_branch, accounthead_id, narration, CREDITDEBIT, amount)
Run Code Online (Sandbox Code Playgroud)
MySQL 不支持“INCLUDE”,因此您必须创建多列索引。
在此处阅读更多信息:https : //dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html
| 归档时间: |
|
| 查看次数: |
2383 次 |
| 最近记录: |