MySQL索引

MySQL基礎

單進程多線程:
    用戶連接:連接線程   

    MySQL數據文件類型:
        數據文件、索引文件
        重做日誌、撤消日誌、二進制日誌、錯誤日誌、查詢日誌、慢查詢日誌、(中繼日誌)

DDL & DML:
    索引管理:
            按特定數據結構存儲的數據;

        索引類型:
            聚集索引、非聚集索引:數據是否與索引存儲在一起;
            主鍵索引、輔助索引
            稠密索引、稀疏索引:是否索引了每一個數據項;
            B+ TREE、HASH、R TREE
            簡單索引、組合索引

            左前綴索引
            覆蓋索引

        管理索引的途徑:
            創建索引:創建表時指定;CREATE INDEX
            創建或刪除索引:修改表的命令
            刪除索引:DROP INDEX

            查看錶上的索引:
                SHOW {INDEX | INDEXES | KEYS}
                    {FROM | IN} tbl_name
                    [{FROM | IN} db_name]
                    [WHERE expr]

        索引的創建可以使用ALTER、CREATE命令創建:
        mysql> CREATE INDEX name ON student (name);
        Query OK, 0 rows affected (0.12 sec)
        Records: 0  Duplicates: 0  Warnings: 0

        mysql> SHOW INDEXES FROM student;
        +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
        | Table   | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
        +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
        | student |          0 | PRIMARY  |            1 | id          | A         |          10 |     NULL | NULL   |      | BTREE      |         |               |
        | student |          1 | name     |            1 | name        | A         |          10 |     NULL | NULL   |      | BTREE      |         |               |
        +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
        2 rows in set (0.00 sec)

        mysql>

            EXPLAIN   #確認是否有使用到索引進行查詢。
            mysql> EXPLAIN SELECT * FROM students WHERE id=3;
            mysql> select * from student;
            +----+----------+---------------+------+
            | id | name     | register_date | sex  |
            +----+----------+---------------+------+
            |  1 | ZhanYang | 2018-06-20    | NULL |
            |  4 | LiuJia   | 2018-05-30    | NULL |
            |  8 | JiaLiu   | 2018-06-20    | NULL |
            |  9 | JiaLiu   | 2018-04-20    | NULL |
            | 10 | gaoyf    | 2018-04-20    | NULL |
            | 11 | zhujh    | 2018-04-20    | NULL |
            | 12 | zhouha   | 2018-04-20    | NULL |
            | 13 | hanzb    | 2018-04-21    | M    |
            | 16 | ZhanXing | 2018-05-21    | M    |
            | 17 | XingYan  | 2018-05-21    | M    |
            +----+----------+---------------+------+
            10 rows in set (0.01 sec)

            mysql> EXPLAIN SELECT * FROM student  WHERE id=4;
            +----+-------------+---------+-------+---------------+---------+---------+-------+------+-------+
            | id | select_type | table   | type  | possible_keys | key     | key_len | ref   | rows | Extra |
            +----+-------------+---------+-------+---------------+---------+---------+-------+------+-------+
            |  1 | SIMPLE      | student | const | PRIMARY       | PRIMARY | 4       | const |    1 | NULL  |
            +----+-------------+---------+-------+---------------+---------+---------+-------+------+-------+
            1 row in set (0.01 sec)

            mysql> EXPLAIN SELECT * FROM student  WHERE id=4\G
            *************************** 1. row ***************************
                       id: 1
              select_type: SIMPLE
                    table: student
                     type: const
            possible_keys: PRIMARY
                      key: PRIMARY
                  key_len: 4
                      ref: const
                     rows: 1
                    Extra: NULL
            1 row in set (0.00 sec)

        mysql> EXPLAIN SELECT * FROM student WHERE name LIKE '%X%';
        +----+-------------+---------+------+---------------+------+---------+------+------+-------------+
        | id | select_type | table   | type | possible_keys | key  | key_len | ref  | rows | Extra       |
        +----+-------------+---------+------+---------------+------+---------+------+------+-------------+
        |  1 | SIMPLE      | student | ALL  | NULL          | NULL | NULL    | NULL |   10 | Using where |
        +----+-------------+---------+------+---------------+------+---------+------+------+-------------+
        1 row in set (0.00 sec)

        mysql> EXPLAIN SELECT * FROM student WHERE name LIKE '%X%'\G
        *************************** 1. row ***************************
                   id: 1
          select_type: SIMPLE
                table: student
                 type: ALL
        possible_keys: NULL
                  key: NULL
              key_len: NULL
                  ref: NULL
                 rows: 10
                Extra: Using where
        1 row in set (0.01 sec)

    DESC命令用於獲取數據表結構
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章