Làm cách nào để xem cơ sở dữ liệu của tôi có bất kỳ chỉ mục nào trên đó không?
Làm thế nào về một bảng cụ thể?
Làm cách nào để xem cơ sở dữ liệu của tôi có bất kỳ chỉ mục nào trên đó không?
Làm thế nào về một bảng cụ thể?
Câu trả lời:
Để xem chỉ mục cho một bảng cụ thể, hãy sử dụng SHOW INDEX:
SHOW INDEX FROM yourtable;
Để xem các chỉ mục cho tất cả các bảng trong một lược đồ cụ thể, bạn có thể sử dụng bảng THỐNG KÊ từ THÔNG TIN_SCHema:
SELECT DISTINCT
TABLE_NAME,
INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema';
Xóa mệnh đề where sẽ hiển thị cho bạn tất cả các chỉ mục trong tất cả các lược đồ.
DISTINCT
từ khóa sẽ che dấu một số chỉ mục - Tôi có một bảng trong đó một chỉ mục có cùng tên nhưng được sử dụng trên hai cột khác nhau, vì vậy ví dụ về lược đồ thông tin ở đây sẽ chỉ hiển thị một chỉ mục.
from mydb
như thể hiện trong câu trả lời của LiorK.
Nếu bạn muốn xem tất cả các chỉ mục trên tất cả các cơ sở dữ liệu cùng một lúc:
use information_schema;
SELECT * FROM statistics;
SELECT * FROM information_schema.statistics;
Bạn có thể sử dụng truy vấn này để lấy không có chỉ mục cũng như tên chỉ mục của mỗi bảng trong cơ sở dữ liệu được chỉ định.
SELECT TABLE_NAME,
COUNT(1) index_count,
GROUP_CONCAT(DISTINCT(index_name) SEPARATOR ',\n ') indexes
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'mydb'
AND INDEX_NAME != 'primary'
GROUP BY TABLE_NAME
ORDER BY COUNT(1) DESC;
Tôi đề xuất truy vấn này:
SELECT DISTINCT s.*
FROM INFORMATION_SCHEMA.STATISTICS s
LEFT OUTER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t
ON t.TABLE_SCHEMA = s.TABLE_SCHEMA
AND t.TABLE_NAME = s.TABLE_NAME
AND s.INDEX_NAME = t.CONSTRAINT_NAME
WHERE 0 = 0
AND t.CONSTRAINT_NAME IS NULL
AND s.TABLE_SCHEMA = 'YOUR_SCHEMA_SAMPLE';
Bạn tìm thấy tất cả Chỉ mục chỉ mục.
Trân trọng.
Để có được tất cả các cột được lập chỉ mục cho mỗi chỉ mục trong một cột theo thứ tự trình tự.
SELECT table_name AS `Table`,
index_name AS `Index`,
GROUP_CONCAT(column_name ORDER BY seq_in_index) AS `Columns`
FROM information_schema.statistics
WHERE table_schema = 'sakila'
GROUP BY 1,2;
Tham chiếu: http://blog.9minutesnooze.com/mysql-inif-schema-indexes/
Để kiểm tra tất cả các chỉ mục bị vô hiệu hóa trên db
SELECT INDEX_SCHEMA, COLUMN_NAME, COMMENT
FROM information_schema.statistics
WHERE table_schema = 'mydb'
AND COMMENT = 'disabled'
Bạn có thể kiểm tra các chỉ mục của mình trong MySQL workbench.under các tab báo cáo hiệu suất mà bạn có thể thấy tất cả các chỉ mục được sử dụng và các chỉ mục không được sử dụng trên hệ thống. hoặc bạn có thể bắn truy vấn.
select * from sys.schema_index_statistics;