我的問題是查看引用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. 檢查列索引
- 2. 如何從檢查索引中檢索術語列表?
- 3. 如何檢查查詢是使用mysql中的索引
- 4. 如何索引MySQL中的查找表
- 5. 如何檢查ListView中的頂部索引(索引0)?
- 6. 如何檢查MySQL查詢是否在使用覆蓋索引?
- 7. 如何檢查索引是否包含SQLite中的特定列
- 8. 從MySQL查詢中檢索列名
- 9. mysql中的索引列
- 10. 如何檢查Checkedlistbox2的索引是否檢查了Checkedlistbox1的索引
- 11. 檢查索引
- 12. 如何檢查空的獲取索引?
- 13. MySql的多列索引如何工作
- 14. MySQL - 如何確定要索引的列?
- 15. 如何從空MySQL選擇查詢結果中檢索列名
- 16. 如何檢查表的列表是否包含索引鍵列(索引)中的特定列
- 17. 檢查多列索引的存在
- 18. 如何檢查ArrayDeque的索引和索引是否爲空?
- 19. 如何檢索行索引中的GridView
- 20. 如何從PHP中檢索MySql全文索引信息?
- 21. MySQL - 如何索引此查詢?
- 22. 如何查看MySql全文索引?
- 23. 如何檢查索引列上的排序?
- 24. 如何在檢索中檢索剪輯中的事實索引?
- 25. 索引mysql查詢
- 26. 如何從C#中的列表框索引檢索文本值
- 27. 如何檢查索引屬性?
- 28. 如何使用Luke檢查Solr索引
- 29. 如何檢查C [數組] [索引] ==「someString」?
- 30. 如何檢查Magento索引狀態