programing

MySQL에서 데이터베이스 또는 테이블의 인덱스를 보는 방법

projobs 2022. 10. 31. 22:43
반응형

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

반응형