MariaDd 빠른 팁 #10 - 테이블 정의 선택

5684 단어 mysqlsql

MariaDB 팁과 요령



이것은 제가 1년 동안 축적한 일련의 빠른 팁과 요령 중 일부이며 다른 사람들에게 유용할 수 있다고 생각합니다.
비슷한 짧은 팁과 요령이 있으면 의견을 남겨주세요.

테이블 정의 선택



전체 데이터베이스 또는 일부 프로그래머가 몇 년 전에 만든 몇 개의 테이블을 문서화하는 작업을 해본 적이 있습니까? 저는 테이블의 스키마를 직접 선택하는 쿼리가 시간을 크게 절약해 준다는 것을 곧 알게 되었습니다.
또는 프로덕션 데이터베이스에 대한 액세스 권한이 없지만 경험한 버그나 성능 문제는 누락된 인덱스 또는 잘못된 열 정의를 나타내므로 IT 운영 부서에 대한 정보를 가져오도록 요청을 보내야 합니다. 당신을 위해 데이터베이스의 테이블.
두 경우 모두 아래 쿼리가 매우 유용할 수 있습니다.

SET @DatabaseName := 'test_db';
SET @TableName := 'departments';

SELECT c.COLUMN_NAME, c.COLUMN_TYPE, c.IS_NULLABLE
  FROM INFORMATION_SCHEMA.`COLUMNS` c 
 WHERE c.TABLE_SCHEMA = @DatabaseName
   AND c.TABLE_NAME = @TableName;

SELECT s.TABLE_NAME,
       s.INDEX_NAME,
       group_concat(s.COLUMN_NAME ORDER BY s.SEQ_IN_INDEX ) AS index_columns,
       s.INDEX_TYPE,
       CASE s.NON_UNIQUE
            WHEN 1 THEN 'Not Unique'
            ELSE 'Unique'
       END AS is_unique
  FROM information_schema.STATISTICS s
 WHERE s.INDEX_SCHEMA = @DatabaseName
   AND s.TABLE_NAME = @TableName
 GROUP BY s.TABLE_NAME,
          s.INDEX_NAME,
          s.INDEX_TYPE,
          s.NON_UNIQUE
 ORDER BY s.TABLE_NAME,
          s.INDEX_NAME;

SELECT tc.CONSTRAINT_NAME, tc.CONSTRAINT_TYPE  
  FROM information_schema.TABLE_CONSTRAINTS tc 
 WHERE tc.CONSTRAINT_SCHEMA = @DatabaseName
   AND tc.TABLE_NAME = @TableName;




좋은 웹페이지 즐겨찾기