Stay organized with collections
Save and categorize content based on your preferences.
SEARCH_INDEXES view
The INFORMATION_SCHEMA.SEARCH_INDEXES view contains one row for each search
index in a dataset.
Required permissions
To see search index metadata, you need the
bigquery.tables.get or bigquery.tables.list Identity and Access Management (IAM)
permission on the table with the index. Each of the following predefined
IAM roles includes at least one of these permissions:
When you query the INFORMATION_SCHEMA.SEARCH_INDEXES view, the query results
contain one row for each search index in a dataset.
The INFORMATION_SCHEMA.SEARCH_INDEXES view has the following schema:
Column name
Data type
Value
index_catalog
STRING
The name of the project that contains the dataset.
index_schema
STRING
The name of the dataset that contains the index.
table_name
STRING
The name of the base table that the index is created on.
index_name
STRING
The name of the index.
index_status
STRING
The status of the index: ACTIVE, PENDING
DISABLEMENT, TEMPORARILY DISABLED, or
PERMANENTLY DISABLED.
ACTIVE means that the index is
usable or being created. Refer to the coverage_percentage
to see the progress of index creation.
PENDING DISABLEMENT means that the total
size of indexed base tables exceeds your organization's
limit; the index is
queued for deletion. While in this state, the index is usable in
search queries and you are charged for the search index storage.
TEMPORARILY DISABLED means that either the total
size of indexed base tables exceeds your organization's
limit, or the base
indexed table is smaller than 10GB. While in this state, the index
is not used in search queries and you are not charged for the
search index storage.
PERMANENTLY DISABLED means that there is an
incompatible schema change on the base table, such as changing the
type of an indexed column from STRING to
INT64.
creation_time
TIMESTAMP
The time the index was created.
last_modification_time
TIMESTAMP
The last time the index configuration was modified. For example,
deleting an indexed column.
last_refresh_time
TIMESTAMP
The last time the table data was indexed. A NULL value
means the index is not yet available.
disable_time
TIMESTAMP
The time the status of the index was set to DISABLED. The
value is NULL if the index status is not
DISABLED.
disable_reason
STRING
The reason the index was disabled. NULL if the index
status is not DISABLED.
DDL
STRING
The DDL statement used to create the index.
coverage_percentage
INTEGER
The approximate percentage of table data that has been indexed. 0%
means the index is not usable in a SEARCH query, even if
some data has already been indexed.
unindexed_row_count
INTEGER
The number of rows in the base table that have not been indexed.
total_logical_bytes
INTEGER
The number of billable logical bytes for the index.
total_storage_bytes
INTEGER
The number of billable storage bytes for the index.
analyzer
STRING
The text analyzer
to use to generate tokens for the search index.
Scope and syntax
Queries against this view must have a dataset qualifier. The
following table explains the region scope for this view:
Optional: PROJECT_ID: the ID of your
Google Cloud project. If not specified, the default project is used.
DATASET_ID: the ID of your dataset. For more
information, see Dataset qualifier.
Example
-- Returns metadata for search indexes in a single dataset.SELECT*FROMmyDataset.INFORMATION_SCHEMA.SEARCH_INDEXES;
Example
The following example shows all active search indexes on tables in the dataset
my_dataset, located in the project my_project. It includes their names, the
DDL statements used to create them, their coverage percentage, and their
text analyzer. If an indexed base table is
less than 10GB, then its index is not populated, in which case
coverage_percentage is 0.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eINFORMATION_SCHEMA.SEARCH_INDEXES\u003c/code\u003e view provides metadata for each search index within a dataset, with each row representing a unique index.\u003c/p\u003e\n"],["\u003cp\u003eAccessing search index metadata requires either the \u003ccode\u003ebigquery.tables.get\u003c/code\u003e or \u003ccode\u003ebigquery.tables.list\u003c/code\u003e IAM permission on the indexed table, which are included in several predefined IAM roles such as \u003ccode\u003eroles/bigquery.admin\u003c/code\u003e and \u003ccode\u003eroles/bigquery.dataViewer\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe view's schema includes details like \u003ccode\u003eindex_name\u003c/code\u003e, \u003ccode\u003eindex_status\u003c/code\u003e, \u003ccode\u003ecreation_time\u003c/code\u003e, \u003ccode\u003eDDL\u003c/code\u003e, \u003ccode\u003ecoverage_percentage\u003c/code\u003e, \u003ccode\u003eanalyzer\u003c/code\u003e and more, offering comprehensive information about each search index.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eindex_status\u003c/code\u003e field indicates the current state of the index, such as \u003ccode\u003eACTIVE\u003c/code\u003e, \u003ccode\u003ePENDING DISABLEMENT\u003c/code\u003e, \u003ccode\u003eTEMPORARILY DISABLED\u003c/code\u003e, or \u003ccode\u003ePERMANENTLY DISABLED\u003c/code\u003e, each having different implications on its usability and storage charges.\u003c/p\u003e\n"],["\u003cp\u003eQueries to this view must use a dataset qualifier, specifying the \u003ccode\u003ePROJECT_ID\u003c/code\u003e and \u003ccode\u003eDATASET_ID\u003c/code\u003e, and its scope is limited to the dataset's location, allowing users to retrieve metadata for search indexes within a specific dataset.\u003c/p\u003e\n"]]],[],null,["# SEARCH_INDEXES view\n===================\n\nThe `INFORMATION_SCHEMA.SEARCH_INDEXES` view contains one row for each search\nindex in a dataset.\n\nRequired permissions\n--------------------\n\nTo see [search index](/bigquery/docs/search-index) metadata, you need the\n`bigquery.tables.get` or `bigquery.tables.list` Identity and Access Management (IAM)\npermission on the table with the index. Each of the following predefined\nIAM roles includes at least one of these permissions:\n\n- `roles/bigquery.admin`\n- `roles/bigquery.dataEditor`\n- `roles/bigquery.dataOwner`\n- `roles/bigquery.dataViewer`\n- `roles/bigquery.metadataViewer`\n- `roles/bigquery.user`\n\nFor more information about BigQuery permissions, see\n[Access control with IAM](/bigquery/docs/access-control).\n\nSchema\n------\n\nWhen you query the `INFORMATION_SCHEMA.SEARCH_INDEXES` view, the query results contain one row for each search index in a dataset.\n\n\u003cbr /\u003e\n\nThe `INFORMATION_SCHEMA.SEARCH_INDEXES` view has the following schema:\n\nScope and syntax\n----------------\n\nQueries against this view must have a [dataset qualifier](/bigquery/docs/information-schema-intro#syntax). The\nfollowing table explains the region scope for this view:\n\nReplace the following:\n\n- Optional: \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: the ID of your Google Cloud project. If not specified, the default project is used.\n- \u003cvar translate=\"no\"\u003eDATASET_ID\u003c/var\u003e: the ID of your dataset. For more information, see [Dataset qualifier](/bigquery/docs/information-schema-intro#dataset_qualifier).\n\n\u003cbr /\u003e\n\n**Example** \n\n -- Returns metadata for search indexes in a single dataset.\n SELECT * FROM myDataset.INFORMATION_SCHEMA.SEARCH_INDEXES;\n\nExample\n-------\n\nThe following example shows all active search indexes on tables in the dataset\n`my_dataset`, located in the project `my_project`. It includes their names, the\nDDL statements used to create them, their coverage percentage, and their\ntext analyzer. If an indexed base table is\nless than 10GB, then its index is not populated, in which case\n`coverage_percentage` is 0. \n\n SELECT table_name, index_name, ddl, coverage_percentage, analyzer\n FROM my_project.my_dataset.INFORMATION_SCHEMA.SEARCH_INDEXES\n WHERE index_status = 'ACTIVE';\n\nThe results should look like the following: \n\n```\n+-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+\n| table_name | index_name | ddl | coverage_percentage | analyzer |\n+-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+\n| small_table | names_index | CREATE SEARCH INDEX `names_index` ON `my_project.my_dataset.small_table`(names) | 0 | NO_OP_ANALYZER |\n| large_table | logs_index | CREATE SEARCH INDEX `logs_index` ON `my_project.my_dataset.large_table`(ALL COLUMNS) | 100 | LOG_ANALYZER |\n+-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+\n```"]]