sql >> Database teknologi >  >> RDS >> Mysql

MySQL Vis indekser i databasen

Mange gange skal du muligvis liste alle indekser i MySQL eller vise alle indekser i MySQL. Sådan viser du indekser i MySQL ved hjælp af kommandoen SHOW INDEX i MySQL.

MySQL Vis indekser i databasen

Her er trinene til at vise indekser i MySQL. Vi vil bruge SHOW INDEXES-sætningen til at liste alle indekser i databasen.

Her er syntaksen for VIS INDEKSER

SHOW INDEXES FROM table_name;

ELLER

SHOW INDEXES FROM db_name.table_name;

ELLER

SHOW INDEXES FROM table_name in db_name;

ELLER

SHOW KEYS FROM table_name in db_name;

I ovenstående forespørgsel skal du angive tabelnavnet og databasenavnet, som du vil vise indekser for.

Bonus Læs:MySQL Sammenlign databaser

MySQL Vis indekser for tabel

Her er et eksempel på en liste over alle indekser for tabel (f.eks. prøve) i MySQL. Erstat det med dit tabelnavn.

mysql> show indexes from cities in sample;
+--------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table  | Non_unique | Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+--------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| cities |          0 | PRIMARY    |            1 | city_id     | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| cities |          1 | country_id |            1 | country_id  | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
+--------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

Outputtet viser mange attributter for hvert indeks, inklusive kardinalitet, nøglenavn, kolonnenavn osv.

Bonus Læs:MySQL Alter Stored Procedure

MySQL Vis indekser for alle tabeller i databasen

Her er SQL-forespørgslen til at vise alle indekser i et specifikt MySQL-databaseskema (f.eks. eksempel) nævnt med fed skrift

mysql> SELECT
         DISTINCT TABLE_NAME,
         INDEX_NAME
      FROM
          INFORMATION_SCHEMA.STATISTICS
      WHERE
          TABLE_SCHEMA = 'sample';
+---------------+---------------+
| TABLE_NAME    | INDEX_NAME    |
+---------------+---------------+
| categories    | PRIMARY       |
| cities        | PRIMARY       |
| cities        | country_id    |
| countries     | PRIMARY       |
| old_orders    | u_orders      |
| orders        | PRIMARY       |
| orders_list   | PRIMARY       |
| recent_orders | order_id      |
| recent_orders | unique_amount |
| x_orders      | PRIMARY       |
+---------------+---------------+

Bonuslæst:MySQL-liste over alle procedurer

MySQL SHOW INDEX Størrelse

Indekslængde er gemt i information_schema.tables-tabellen. Her er SQL-forespørgslen til at vise indeksstørrelse i MySQL for en specifik database-'prøve'. Erstat det med dit databasenavn.

mysql> SELECT table_name,
           concat( round( data_length / ( 1024 *1024 ) , 2 ) , 'Mb' ) AS 'data_length_mb',
           concat( round( index_length / ( 1024 *1024 ) , 2 ) , 'Mb' ) AS 'index_length_mb',
           concat( round( round( data_length + index_length ) / ( 1024 *1024 ) , 2 ) , 'Mb' )  AS 'total_size_mb'
       FROM information_schema.tables
       WHERE table_schema ='sample'
       ORDER BY data_length desc;	
+----------------+----------------+-----------------+---------------+
| table_name     | data_length_mb | index_length_mb | total_size_mb |
+----------------+----------------+-----------------+---------------+
| meeting        | 0.02Mb         | 0.00Mb          | 0.02Mb        |
| sample_data    | 0.02Mb         | 0.00Mb          | 0.02Mb        |
| ...            | ...            | ...             | ...           |
+----------------+----------------+-----------------+---------------+

Bonus Læs:MySQL Nulstil root-adgangskode

List alle indekser af alle databaseskemaer

Her er SQL-forespørgslen til at vise indekser af alle tabeller i et MySQL-databaseskema, som du har adgang til.

SELECT
    DISTINCT TABLE_NAME,
    INDEX_NAME
FROM
    INFORMATION_SCHEMA.STATISTICS;	

Forhåbentlig kan du nu nemt liste indekser i MySQL.

Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!

  1. Hvordan REGEXP virker i MariaDB

  2. Sådan fungerer SQLite Quote()

  3. MariaDB CURRENT_ROLE() Forklaret

  4. PostgreSQL Connection Pooling:Del 2 – PgBouncer