使用以下命令我可以获得创建索引
命令,
SELECT CONCAT ('
create index ',index_name,' on ',table_schema,'.',table_name,' (',COLUMN_NAME,');'
) FROM
inf_schema.STATS WHERE
table_schema='employee' AND
table_name='FILESPROC' AND
index_name NOT LIKE 'PRIMARY' ;
我得到以下输出:
create index FILENAMEPROCID on employee.FILESPROCESSED (PROCID);
create index FILENAMEPROCID on employee.FILESPROCESSED (FILENAME);
create index NENDDATEDataName on employee.FILESPROCESSED (DSN);
create index NENDDATEDataName on employee.FILESPROCESSED (ENDDATE);
create index NENDDATEDataName on employee.FILESPROCESSED (DataName);
create index DSN on employee.FILESPROCESSED (DSN);
create index ENDDATE on employee.FILESPROCESSED (ENDDATE);
但是,我需要以下方式的输出:
create index FILENAMEPROCID on employee.FILESPROCESSED (PROCID, FILENAME);
create index NENDDATEDataName on employee.FILESPROCESSED (DSN, ENDDATE, DataName);
create index DSN on employee.FILESPROCESSED (DSN);
create index ENDDATE on employee.FILESPROCESSED (ENDDATE);
这样我就能够创建复合索引。我该如何实现这一目标?
最佳答案
对具有相同 INDEX_NAME
的所选 COLUMN_NAME
使用 GROUP_CONCAT
。
SELECT
CONCAT (
'create index ', index_name, ' on ', table_schema, '.', table_name,
' ( ', GROUP_CONCAT( COLUMN_NAME SEPARATOR ', ' ), ' );'
) indexes_scripts
FROM
inf_schema.STATS
WHERE
table_schema='employee'
AND table_name='FILESPROC'
AND index_name NOT LIKE 'PRIMARY'
GROUP BY index_name
关于mysql - mysql中使用concat创建复合索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23339063/