26
Tôi cần một truy vấn để xem bảng đã có bất kỳ chỉ mục nào trên bảng đó hay không.Truy vấn để kiểm tra chỉ mục trên một bảng
Tôi cần một truy vấn để xem bảng đã có bất kỳ chỉ mục nào trên bảng đó hay không.Truy vấn để kiểm tra chỉ mục trên một bảng
Trong postgres, nó chỉ là \ d + bảng, trong MySQL là desc
Trả lời
Nếu bạn đang sử dụng MySQL bạn có thể chạy
SHOW KEYS FROM table
hoặcSHOW INDEXES FROM table
Nguồn
2009-11-25 23:38:58 nickf
vì vậy xin lỗi vì đã không nói với môi trường. SQL Server 2008 – sine
On Oracle:
Xác định tất cả các chỉ số trên bảng:
Xác định các cột chỉ số và cột trên chỉ số:
Tài liệu tham khảo:
Nguồn
2009-11-25 23:39:41 FerranB
Hầu hết các hỗ trợ RDBMS hiện đại schema
INFORMATION_SCHEMA
. Nếu máy của bạn hỗ trợ điều đó, thì bạn muốn hoặc làINFORMATION_SCHEMA.TABLE_CONSTRAINTS
hoặcINFORMATION_SCHEMA.KEY_COLUMN_USAGE
hoặc có thể cả hai.Để xem nếu bạn hỗ trợ nó cũng đơn giản như chạy
select count(*) from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
EDIT: SQL Server không có
INFORMATION_SCHEMA
, và nó dễ dàng hơn để sử dụng hơn so với bảng nhà cung cấp cụ thể của họ, vì vậy chỉ cần đi với nó.Nguồn
2009-11-26 00:04:16 Donnie
Như tên cho thấy, khung nhìn chuẩn ANSI, 'INFORMATION_SCHEMA.TABLE_CONSTRAINTS' chỉ hiển thị các ràng buộc. Trong khi một số ràng buộc là các chỉ mục không phải tất cả các chỉ mục đều là các ràng buộc. Chế độ xem này sẽ không hiển thị các chỉ mục thông thường: chỉ hiển thị 'CONSTRAINT_TYPE' của 'UNIQUE', ' TỪ CHÍNH ",' NGOẠI TỆ 'hoặc 'CHECK'. Xem [phần có liên quan từ “Hoàn thành SQL-99, Thực sự”] (https://mariadb.com/kb/en/sql-99-complete-really/16-sql-catalogs/the-information-schema/ information_schema-views/information_schematable_constraints /) –
Mở SQL Server, điều này sẽ liệt kê tất cả các chỉ số cho một bảng quy định:
truy vấn này sẽ liệt kê tất cả các bảng mà không có một chỉ số:
Và đây là một MSDN FAQ thú vị về một chủ đề liên quan:
Querying the SQL Server System Catalog FAQ
Nguồn
2009-11-26 12:12:47 gkrogers
Làm cách nào để xem các cột mà các chỉ mục này đã được đặt vào? –
Cần lưu ý truy vấn hàng đầu sẽ thất bại nếu bảng có nhiều chỉ mục, Thay thế 'object_id = (select' bằng' object_id IN (select' nếu bạn cần xem thông tin về chỉ mục hoặc chỉ muốn truy vấn hoàn thành không có lỗi. – Tor
Nếu bạn chỉ cần các cột được lập chỉ mục E XEC sp_helpindex 'TABLE_NAME'
Nguồn
2015-08-04 13:00:59 Salim
Dưới đây là những gì tôi sử dụng cho TSQL mà đã chăm sóc của vấn đề mà tên bảng của tôi có thể chứa tên lược đồ và có thể là tên cơ sở dữ liệu:
Các trường hợp sử dụng cho điều này là tôi muốn danh sách các chỉ mục cho một bảng được đặt tên để tôi có thể viết một thủ tục tự động nén tất cả các chỉ mục trên một bảng.
Nguồn
2016-04-19 01:43:52
Trước tiên, bạn kiểm tra id bảng của bạn (aka object_id)
sau đó bạn có thể nhận được tên của cột.Ví dụ giả sử bạn thu được từ truy vấn trước số 4 như object_id
Nguồn
2017-01-04 17:46:32
việc kiểm tra này cũng này đưa ra một cái nhìn tổng quan của những hạn chế liên quan trên cơ sở dữ liệu. Cũng vui lòng bao gồm tạo điều kiện trong đó điều kiện với tên bảng quan tâm để cung cấp thông tin nhanh hơn.
select a.TABLE_CATALOG as DB_name,a.TABLE_SCHEMA as tbl_schema, a.TABLE_NAME as tbl_name,a. CONSTRAINT_NAME as constraint_name,b.CONSTRAINT_TYPE from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE a join INFORMATION_SCHEMA.TABLE_CONSTRAINTS b on a.CONSTRAINT_NAME=b.CONSTRAINT_NAME
Nguồn
2017-01-07 01:31:33 SunilBk
Tạo một thủ tục lưu trữ để liệt kê chỉ mục cho một bảng trong cơ sở dữ liệu trong SQL Server
Nguồn
2017-04-24 12:51:03
Các vấn đề liên quan