我的問題是查看引用MySQL中列的索引。 是否有任何快速的方式來列出列(在表中)參與的所有索引。如何檢查MySQL中列的索引
0
A
回答
0
我在網上搜索,我找不到明確的答案這個問題。然後,我想在這裏發佈我的解決方案。我希望有人會覺得它有用。 此腳本也可幫助您檢測組合索引。 想象一下,我們有一個Employee
表和一個id
列作爲主鍵。 我們希望找到引用Employee
.id`的數據庫中的所有索引(單個和複合)。
SELECT
stat.TABLE_NAME,
stat.INDEX_NAME,
stat.COLUMN_NAME,
stat.SEQ_IN_INDEX,
statAll.`COMPOSITE`
FROM
information_schema.KEY_COLUMN_USAGE keyUsage
JOIN INFORMATION_SCHEMA.STATISTICS stat
ON (keyUsage.TABLE_NAME = stat.TABLE_NAME AND keyUsage.COLUMN_NAME = stat.COLUMN_NAME)
JOIN (SELECT
TABLE_NAME,
INDEX_NAME,
IF (COUNT(*) > 1, true, false) `COMPOSITE`
FROM
INFORMATION_SCHEMA.STATISTICS
WHERE
TABLE_SCHEMA = (SCHEMA())
GROUP BY
TABLE_NAME,
INDEX_NAME) statAll
ON (statAll.TABLE_NAME = keyUsage.TABLE_NAME AND statAll.INDEX_NAME = stat.INDEX_NAME)
WHERE
keyUsage.REFERENCED_TABLE_NAME in ('Employee') -- Table Name
AND keyUsage.REFERENCED_COLUMN_NAME = 'id' -- Column Name
AND keyUsage.TABLE_SCHEMA = (SCHEMA())
GROUP BY
stat.TABLE_NAME,
stat.INDEX_NAME,
stat.COLUMN_NAME,
stat.SEQ_IN_INDEX
ORDER BY keyUsage.REFERENCED_TABLE_NAME, keyUsage.TABLE_NAME;
其結果是,在不同的表索引列表。每一行都包含下列數據:
- TABLE_NAME:在索引定義的表,
- INDEX_NAME:該表中的索引名,
- COLUMN_NAME:在表的外鍵列名,
- SEQ_IN_INDEX:索引中列的序號,
- COMPOSITE:表示參與列位於組合鍵中的標誌。它顯示索引是複合還是單一。
0
這似乎有點短:
select s.`TABLE_SCHEMA` AS `TABLE_SCHEMA`,s.`TABLE_NAME` AS `TABLE_NAME`,
s.`INDEX_NAME` AS `INDEX_NAME`,max(s.`NON_UNIQUE`) AS `non_unique`,
max(if(isnull(s.`SUB_PART`),0,1)) AS `subpart_exists`,
group_concat(s.`COLUMN_NAME`
order by s.`SEQ_IN_INDEX` ASC separator ','
) AS `index_columns`
FROM `information_schema`.`statistics` AS s2
JOIN `information_schema`.`statistics` AS s
USING (TABLE_SCHEMA, TABLE_NAME, INDEX_NAME)
WHERE s2.TABLE_SCHEMA = SCHEMA()
AND s2.TABLE_NAME = '...'
AND s2.COLUMN_NAME = '...'
group by s.`TABLE_SCHEMA`,s.`TABLE_NAME`,s.`INDEX_NAME`;
SEQ_IN_INDEX和複合是在我index_columns
,其重建列列表隱。
相關問題
- 1. 如何檢查查詢是使用mysql中的索引
- 2. 如何索引MySQL中的查找表
- 3. 如何檢查MySQL查詢是否在使用覆蓋索引?
- 4. 如何檢查索引是否包含SQLite中的特定列
- 5. 如何檢查Checkedlistbox2的索引是否檢查了Checkedlistbox1的索引
- 6. 檢查索引
- 7. MySql的多列索引如何工作
- 8. 如何檢查空的獲取索引?
- 9. 如何從空MySQL選擇查詢結果中檢索列名
- 10. 檢查多列索引的存在
- 11. 如何從PHP中檢索MySql全文索引信息?
- 12. 如何查看MySql全文索引?
- 13. 如何從C#中的列表框索引檢索文本值
- 14. mysql php搜索引擎查詢多列
- 15. MySQL中的兩個單列索引與一個兩列索引?
- 16. 如何檢查索引屬性?
- 17. 如何使用Luke檢查Solr索引
- 18. 檢索mysql查詢
- 19. 多列mysql索引
- 20. MYSQL多列索引
- 21. MySQL多列索引
- 22. liquibase:按列檢查複合索引
- 23. 檢索列mySQL PHP
- 24. 檢查列表中某些索引處的重複列表
- 25. MySQL的查詢和索引
- 26. 如何檢查MySQL中的表字段上是否存在索引?
- 27. 如何使用linq查詢使用索引從列表中檢索值?
- 28. MySQL的多列索引
- 29. 從mysql中的列中檢索數據
- 30. 如何查看mysql工作臺中的表上的索引?