26
Ho bisogno di una query per vedere se una tabella ha già degli indici su di essa.Query per verificare l'indice su una tabella
Ho bisogno di una query per vedere se una tabella ha già degli indici su di essa.Query per verificare l'indice su una tabella
di PostgreSQL, è solo \ d + tavolo, in MySQL è disc
risposta
Se stai usando MySQL è possibile eseguire
SHOW KEYS FROM table
oSHOW INDEXES FROM table
fonte
2009-11-25 23:38:58 nickf
così dispiaciuto per non aver detto l'ambiente. SQL Server 2008 – sine
su Oracle:
Determinare tutti gli indici sulla tabella:
Determinare colonne indici e le colonne su indice:
Riferimenti:
fonte
2009-11-25 23:39:41 FerranB
maggior supporto RDBMS moderna la
INFORMATION_SCHEMA
schema. Se il tuo supporta questo, allora vuoi siaINFORMATION_SCHEMA.TABLE_CONSTRAINTS
oINFORMATION_SCHEMA.KEY_COLUMN_USAGE
, o forse entrambi.Per vedere se il vostro supporti è facile come eseguire
select count(*) from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
EDIT: SQL Server ha
INFORMATION_SCHEMA
, ed è più facile da usare rispetto ai loro tavoli specifici del produttore, quindi basta andare con esso.fonte
2009-11-26 00:04:16 Donnie
Come suggerisce il nome, la vista standard ANSI, 'INFORMATION_SCHEMA.TABLE_CONSTRAINTS' mostra solo i vincoli. Mentre alcuni vincoli sono indici, non tutti gli indici sono vincoli. Questa vista non mostra indici regolari: visualizza solo 'CONSTRAINT_TYPE' di' UNIQUE', 'PRIMARY KEY',' FOREIGN KEY' o 'CHECK'. Vedi [la relativa sezione da "SQL-99 Completa, Really"] (https://mariadb.com/kb/en/sql-99-complet-really/16-sql-catalogs/the-information-schema/ information_schema-views/information_schematable_constraints /) –
su SQL Server, questo elencherà tutti gli indici per una tabella specificata:
Questa query elencherà tutte le tabelle senza un indice:
E questo è un interessante MSDN FAQ su un argomento correlato:
Querying the SQL Server System Catalog FAQ
fonte
2009-11-26 12:12:47 gkrogers
Come faccio a vedere su quali colonne sono stati collocati questi indici? –
Dovrebbe essere notato che la query superiore fallirà se la tabella ha più di un indice, Sostituisci 'object_id = (select' con' object_id IN (select' se hai bisogno di vedere le informazioni sugli indici, o vuoi solo completare la query senza errori. – Tor
Se sono necessarie solo le colonne indicizzate E XEC sp_helpindex 'TABLE_NAME'
fonte
2015-08-04 13:00:59 Salim
Ecco quello che ho usato per il TSQL che ha curato il problema che il mio nome tabella potrebbe contenere il nome dello schema e, eventualmente, il nome del database:
Il caso d'uso per questo è che volevo l'elenco di indici per una tabella denominata in modo da poter scrivere una procedura che comprimesse in modo dinamico tutti gli indici su una tabella.
fonte
2016-04-19 01:43:52
Prima di controllare il proprio ID tavolo (aka object_id)
quindi è possibile ottenere i nomi della colonna.Per esempio supponendo che si è ottenuto dalla query precedente il numero 4 come object_id
fonte
2017-01-04 17:46:32
controllo anche questo Questo dà una visione d'insieme di vincoli associati attraverso un database. Si prega di includere anche la facilitazione delle condizioni in cui il nome della tabella di interesse fornisce le informazioni più velocemente.
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
fonte
2017-01-07 01:31:33 SunilBk
creato una stored procedure per elencare gli indici per una tabella nel database in SQL Server
fonte
2017-04-24 12:51:03
Problemi correlati