如何在MYSQL中创建索引?

问题描述 投票:1回答:1

我有这样的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

如果我给表transactionindtails一个索引,它会帮助这个查询吗?

创建的索引如下所述

CREATE INDEX IDX_transactiondetails_ID_Branch ON  transactiondetails 
(tx_voucher_id,tx_voucher_branch,accounthead_id) INCLUDE 
 (narration,CREDITDEBIT,amount)

从上面的索引创建查询中,我们对某些列使用了INCLUDE关键字。现在我需要知道,我如何在MySQL中创建上述索引创建查询?

mysql sql mysql-workbench
1个回答
4
投票

试试这个:

CREATE INDEX IDX_transactiondetails_ID_Branch ON  transactiondetails (tx_voucher_id, tx_voucher_branch, accounthead_id, narration, CREDITDEBIT, amount)

MySQL不支持“INCLUDE”,因此您必须创建一个多列索引。

在这里阅读更多:https://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html

© www.soinside.com 2019 - 2024. All rights reserved.