PostgreSQL 데이터베이스에서 인덱스의 열 위치를 얻는 방법은 무엇입니까? pg_index 카탈로그 테이블의 indkey는 테이블에있는 해당 열의 위치를 알려주지 만 인덱스가 들어있는 열의 위치를 원한다.인덱스의 열 위치
답변
한 가지 방법이 있습니다. 그것은 최선의 방법이 아닐 수도 있습니다.
SELECT c.relname, a.attname, a.attnum
FROM pg_attribute a
INNER JOIN pg_class c on c.oid = a.attrelid
WHERE c.relkind = 'i'
AND c.relname = 'beds_pkey'
AND a.attnum > 0
여기에서 beds_pkey
은 색인 이름입니다.
select
c.relname as tabela,
a.relname as indexname,
d.attname as coluna,
(
select
temp.i + 1
from
(
SELECT generate_series(array_lower(b.indkey,1),array_upper(b.indkey,1)) as i
) temp
where
b.indkey[i] = d.attnum
) as posicao
from
pg_class a
inner join
pg_index b
on
a.oid = b.indexrelid
inner join
pg_class c
on
b.indrelid = c.oid
inner join
pg_attribute d
on
c.oid = d.attrelid and
d.attnum = any(b.indkey)
where
b.indisprimary != true and
a.relname not like 'pg_%'
order by
tabela, indexname, posicao
indkey
은 배열이며 해당 배열의 항목 순서에 따라 색인 열의 순서가 결정됩니다.
따라서 indkey
에 {2,4}가 있으면 표의 두 번째 열이 색인에서 첫 번째로 나오고 표의 네 번째 열이 색인의 두 번째 열입니다.
indkey
에 {4,3}이 있으면 표의 네 번째 열이 색인의 첫 번째 열이고 표의 세 번째 열이 색인의 두 번째 열입니다.
@Catcall을 빠른 테스트에서 나에 적절한 솔루션 : 여기 – vchitta
리카르도의 대답은 내가 필요한 대답이다. 벡터 pg_index.indkey에서 pg_attribute.attnum (테이블의 열 위치)의 위치를 찾아야합니다. 인덱스의 열 위치가 표시됩니다. –
자체 테이블이있는 인덱스의 열의'attnum' 쿼리 할 때 마이크 솔루션을 올바른지. Mike 's는 인덱스로 쿼리 할 수 있습니다. 테이블별로 쿼리 할 수 있습니다. – Logan
- 1. MySQL의 - 다중 열 인덱스의 순서
- 2. NSString에서 줄 인덱스와 열 인덱스의 문자열 인덱스
- 3. Gridview 편집 열 위치
- 4. MySQL 오류 : "열 'columnname'은 FULLTEXT 인덱스의 일부가 될 수 없습니다.
- 5. 오라클 인덱스 문자열 열 - 데이터 형식이 인덱스의 품질에 영향을 줍니까?
- 6. 여러 열/SQL 쿼리의 위치
- 7. 의 MSChart 열 차트 위치
- 8. Delphi에서 DBGrid의 열 위치 변경
- 9. 인덱스의 내부 작업 및 인덱스
- 10. 큐 인덱스의 C++ 스왑()
- 11. 재귀 트리 인덱스의 순서?
- 12. 숫자가 아닌 인덱스의 성능
- 13. 인덱스의 이름은 데이터베이스에서 고유해야합니까?
- 14. Oracle 인덱스의 크기를 어떻게 예측할 수 있습니까?
- 15. MySQL의 : 테이블을 감안할 때 위치 열
- 16. 위치 0에 C# datatable 삽입 열
- 17. 플로트가 아닌 절대 위치 지정 열
- 18. iPad에서 앱을 열 때 위치 UILabel
- 19. Lucene - 여러 인덱스의 데이터 비교
- 20. InnoDB 클러스터 된 인덱스의 Null?
- 21. PHP 인덱스의 변수를 변경하는 경우
- 22. 배열 감지 메서드 - 특정 하위 배열 인덱스의 값을 반환 하시겠습니까?
- 23. 바이트 배열을 특정 인덱스의 문자열로 변환 (Flex)
- 24. 테이블 인덱스와 뷰 인덱스의 차이점은 무엇입니까?
- 25. 고유 제한 조건과 고유 인덱스의 차이점
- 26. 인덱스의 모듈 계산 int Struts2 iterator
- 27. snmp : 테이블 인덱스의 일부만 제공되면 올바르게 동작합니까?
- 28. 기본 인덱스의 번호를 다시 매는 방법
- 29. Mysql과 인덱스의 두 열에 대한 고유 제한
- 30. INCLUDE 인덱스의 이름 지정 표준은 무엇입니까?
+1 내 대답보다 훨씬 나은 해결책. –
그러나 pg_class와 pg_attribute를 결합하는 것보다 "indkey"라는 이름을 보는 것이 훨씬 더 합리적입니다. 나는 시스템 테이블이 싫다. 내가 그들을 볼 때마다 나는 내 이름 인 앨리스 (Alice)처럼 느껴져, 나는 방금 보이는 유리를 밟았다. –