MySQL에서 데이터베이스 또는 테이블의 인덱스를 보는 방법
데이터베이스에 인덱스가 있는지 확인하려면 어떻게 해야 합니까?
특정 테이블은 어떻습니까?
특정 테이블의 인덱스를 표시하려면 SHOW INDEX를 사용합니다.
SHOW INDEX FROM yourtable;
특정 스키마 내의 모든 테이블에 대한 인덱스를 표시하려면 INFORMATION_SCHEMA에서 STATISTICS 테이블을 사용합니다.
SELECT DISTINCT
TABLE_NAME,
INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema';
where 구를 삭제하면 모든 스키마의 모든 인덱스가 표시됩니다.
모든 데이터베이스의 모든 색인을 한 번에 보려면:
use information_schema;
SELECT * FROM statistics;
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
메뉴얼을 참조해 주세요.
이 쿼리를 사용하여 지정된 데이터베이스에 있는 각 테이블의 색인 이름과 색인 수를 가져올 수 있습니다.
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;
작성한 인덱스를 보려면 사용
SHOW INDEX from your_table_name;
테이블의 모든 인덱스 보기(DB 및 사용자가 작성)
SHOW EXTENDED INDEX from your_table_name;
순서에서 한 열에 있는 인덱스당 모든 열을 가져옵니다.
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;
참고 자료: http://blog.9minutesnooze.com/mysql-information-schema-indexes/
그거 좋지show create table myTable
?
누가 나한테 이런 말을 해줬는데, 여기서 누가 언급하는 걸 못 봤는데, 뭐 안 좋은 건 없나요?
열 정보와 함께 인덱스를 살펴보는 것만으로도 좋습니다.
다음 질문을 제안합니다.
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';
색인 전용 인덱스를 모두 찾았습니다.
관심.
이 방법은 인덱스된 필드의 해당 테이블에서 테이블 이름과 열 이름을 가져오는 데 도움이 됩니다.
SELECT TABLE_NAME , COLUMN_NAME, COMMENT
FROM information_schema.statistics
WHERE table_schema = 'database_name';
DB에서 실행 중지된 모든 인덱스를 검사하려면
SELECT INDEX_SCHEMA, COLUMN_NAME, COMMENT
FROM information_schema.statistics
WHERE table_schema = 'mydb'
AND COMMENT = 'disabled'
MySQL 워크벤치에서 인덱스를 확인할 수 있습니다.퍼포먼스 리포트 탭에서 시스템에서 사용된 모든 인덱스와 사용되지 않은 인덱스를 볼 수 있습니다.또는 쿼리를 실행할 수 있습니다.
select * from sys.schema_index_statistics;
테이블의 인덱스 정보를 쿼리하려면 다음과 같이 SHOW INDEX 문을 사용합니다.
SHOW INDEXES FROM table_name;
데이터베이스에 연결되어 있지 않거나 다른 데이터베이스에 있는 테이블의 인덱스 정보를 가져오려는 경우 데이터베이스 이름을 지정할 수 있습니다.
SHOW INDEXES FROM table_name
IN database_name;
다음 쿼리는 위의 쿼리와 유사합니다.
SHOW INDEXES FROM database_name.table_name;
INDEX와 KEYS는 INDEX의 동의어이고 IN은 FROM의 동의어이므로 대신 SHOW INDEX 컬럼에서 이러한 동의어를 사용할 수 있습니다.예를 들어 다음과 같습니다.
SHOW INDEX IN table_name
FROM database_name;
또는
SHOW KEYS FROM tablename
IN databasename;
아래 인덱스 이름을 알고 있는 경우 테이블 위의 인덱스를 직접 볼 수 있습니다.
all_module에서 *를 선택합니다. 여기서 index_name= 'your index'
select
table_name,
index_name,
seq_in_index,
column_name,
non_unique,
index_type,
comment
from
information_schema.statistics
where 1=1
and table_schema = 'my_schema'
and table_name = 'my_table'
order by 1,2,3,4,5,6
언급URL : https://stackoverflow.com/questions/5213339/how-to-see-indexes-for-a-database-or-table-in-mysql
'programing' 카테고리의 다른 글
모든 데이터를 vuex 상태로 저장해야 합니까? (0) | 2022.10.31 |
---|---|
primitive int 목록을 작성하시겠습니까? (0) | 2022.10.31 |
JavaScript 비프음 울리는 방법 (0) | 2022.10.31 |
유사한 결과를 찾고 유사도를 기준으로 정렬하는 방법은 무엇입니까? (0) | 2022.10.21 |
Java를 사용하여 인터넷에서 파일을 다운로드 및 저장하는 방법은 무엇입니까? (0) | 2022.10.21 |