mysql將索引到處成oracle

查詢sql:

SELECT
CONCAT('CREATE INDEX ',
IF(LENGTH(INDEX_NAME) < 30,INDEX_NAME,SUBSTRING(INDEX_NAME,1,30))
,' ', ' ON ', 
 IF(NON_UNIQUE = 1,
 CASE UPPER(INDEX_TYPE)
 WHEN 'FULLTEXT' THEN 'FULLTEXT INDEX'
 WHEN 'SPATIAL' THEN 'SPATIAL INDEX'
 ELSE CONCAT('',
  TABLE_NAME,
  ' '
 )
END,
IF(UPPER(INDEX_NAME) = 'PRIMARY',
 CONCAT('PRIMARY KEY USING ',
 INDEX_TYPE
 ),
CONCAT('UNIQUE INDEX ',
 INDEX_NAME,
 ' USING ',
 INDEX_TYPE
)
)
),'(', GROUP_CONCAT(DISTINCT CONCAT('', COLUMN_NAME, '',' ASC ') ORDER BY SEQ_IN_INDEX ASC SEPARATOR ', '), ');') AS 'Show_Add_Indexes'
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = 'iov_his' and UPPER(INDEX_NAME)!='PRIMARY'
GROUP BY TABLE_NAME, INDEX_NAME
ORDER BY TABLE_NAME ASC, INDEX_NAME ASC

這樣可以查出整個庫的所有表的索引,並且拼接成oracle可以執行的sql腳本。

oracle命名長度不能超過30個字符,所以將名字截斷了30個字符內。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章