最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于mysql的時區(qū)問題

 更新時間:2023年11月07日 08:37:55   作者:shuair  
這篇文章主要介紹了關于mysql的時區(qū)問題,具有很好的參考價值,希望對大家有所幫助,以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家,

查看及設置時區(qū)

查看時區(qū)

命令:

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | SYSTEM |
+------------------+--------+

返回:

system_time_zone:mysql啟動的時候,mysql服務所在服務器(主機)的時區(qū),windows系統(tǒng)返回為空,linux系統(tǒng)一般會返回CST,個人認為,這里的CST表示的是中國標準時間(CST還可以表示其它某些地區(qū)的標準時間),有時可能會返回UTC(協(xié)調世界時),粗略理解為0時區(qū)時間(GMT,格林尼治標準時間),個人認為,system_time_zone并不是很重要

time_zone:當前會話使用的時區(qū),可以在配置文件中指定默認值,如果不指定,默認值是SYSTEM,表示使用system_time_zone指向的時區(qū),time_zone可以使用時調整,一些函數(shù)(比如:now())返回的值就和time_zone有關,但一般不要輕易改變

配置文件設置time_zone默認值

在my.ini文件(linux系統(tǒng)是my.cnf文件)的[mysqld]節(jié)點設置,設置后重啟服務

[mysqld]
default-time-zone = '+0:00'

命令設置時區(qū)

mysql> set time_zone='+08:00';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | +08:00 |
+------------------+--------+
2 rows in set (0.04 sec)

datetime和timestamp的區(qū)別

結論:datetime可以理解為保存的是一個字符串,切換時區(qū)后,不會有變化,timestamp可以理解為保存的是距離1970-01-01 08:00:00的時間差(將當前時區(qū)的時間轉換成0時區(qū)的時間,然后計算與1970-01-01 08:00:00的時間差),切換時區(qū)后,顯示的是當前時區(qū)所對應的時間

創(chuàng)建一個表

CREATE TABLE `time_zone_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `create_time` datetime NOT NULL,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入數(shù)據并根據在不同時區(qū)查看數(shù)據

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | SYSTEM |
+------------------+--------+
2 rows in set (0.03 sec)

mysql> INSERT INTO `test`.`time_zone_test` (`create_time`, `update_time`) VALUES ('2022-09-03 23:01:14', '2022-09-03 23:01:14');
Query OK, 1 row affected (0.01 sec)

mysql> select * from time_zone_test;
+----+---------------------+---------------------+
| id | create_time         | update_time         |
+----+---------------------+---------------------+
|  1 | 2022-09-03 23:01:14 | 2022-09-03 23:01:14 |
+----+---------------------+---------------------+
1 row in set (0.04 sec)

mysql> set time_zone='+08:00';
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | +08:00 |
+------------------+--------+
2 rows in set (0.03 sec)

mysql> select * from time_zone_test;
+----+---------------------+---------------------+
| id | create_time         | update_time         |
+----+---------------------+---------------------+
|  1 | 2022-09-03 23:01:14 | 2022-09-03 23:01:14 |
+----+---------------------+---------------------+
1 row in set (0.06 sec)

mysql> set time_zone='-05:00';
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | -05:00 |
+------------------+--------+
2 rows in set (0.05 sec)

mysql> select * from time_zone_test;
+----+---------------------+---------------------+
| id | create_time         | update_time         |
+----+---------------------+---------------------+
|  1 | 2022-09-03 23:01:14 | 2022-09-03 10:01:14 |
+----+---------------------+---------------------+
1 row in set (0.04 sec)

可以發(fā)現(xiàn)

  • create_time的類型是datetime,切換時區(qū)后,顯示的時間不變,update_time的類型是timestamp,切換時區(qū)后,顯示的時間有變化
  • 同時可以發(fā)現(xiàn),我的電腦默認的時區(qū)就是 +08:00

mybatis連接mysql的問題

java程序,以springboot程序為例,使用mybatis操作mysql時,會涉及到時區(qū)轉換的問題

連接mysql并設置時區(qū)

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
    username: xxxx
    password: xxxx
    driver-class-name: com.mysql.cj.jdbc.Driver

serverTimezone表示當前會話的時區(qū),這句話應該是錯誤的,但是現(xiàn)在大部分文章都這樣寫

serverTimezone表示的是希望用戶配置一個與mysql服務器默認的time_zone相同的值,我們一般設置為serverTimezone=GMT%2B8serverTimezone=Asia/Shanghai,因為我們的mysql服務器time_zone一般就是+08:00

serverTimezone的作用是將程序的時區(qū)與serverTimezone設置的時區(qū)做比較,然后將時區(qū)轉換后的時間字符串發(fā)送給mysql服務器,到mysql服務器上,使用的會話時區(qū)就是默認的會話時區(qū),就是默認查詢出來的time_zone的值

修改windows系統(tǒng)的時區(qū)(附加)

使用tzutil工具

C:\Users\yangs>tzutil /g
China Standard Time
C:\Users\yangs>tzutil /s "Greenwich Standard Time"

C:\Users\yangs>tzutil /g
Greenwich Standard Time

添加數(shù)據時,程序時區(qū)、serverTimezone時區(qū)不一致導致的時間轉換問題

實際這里涉及到三個時區(qū)

  • 程序時區(qū):springboot的時區(qū)
  • serverTimezone設置的時區(qū)
  • mysql服務默認的時區(qū)time_zone

springboot程序默認使用所在系統(tǒng)的時區(qū)

例1

springboot項目所在操作系統(tǒng)的時區(qū)為:(UTC+08:00) 北京,重慶,香港特別行政區(qū),烏魯木齊

連接mysql設置serverTimezone=GMT%2B9,(UTC+09:00) 大阪,札幌,東京

當前時間:

  • (UTC+08:00) 北京 10:30(電腦時間)
  • (UTC+09:00) 大阪 11:30

mysql的默認時區(qū):+08:00

代碼邏輯:獲取當前時間并存入到數(shù)據庫(createTime、updateTime)

程序的入參(查看打印的日志):

JDBC Connection [HikariProxyConnection@886416306 wrapping com.mysql.cj.jdbc.ConnectionImpl@25baed04] will not be managed by Spring
==>  Preparing: insert into time_zone_test (id, create_time, update_time ) values (?, ?, ? ) 
==> Parameters: null, 2022-09-04 10:22:33.937(Timestamp), 2022-09-04 10:22:33.937(Timestamp)
<==    Updates: 1

日志打印的是當前時間,但是這個并不是發(fā)給mysql的時間,發(fā)給mysql的時間會做時區(qū)轉換

發(fā)給mysql的時間:

可在org.apache.ibatis.executor.SimpleExecutor#doUpdate查看

HikariProxyPreparedStatement@1978182025 wrapping com.mysql.cj.jdbc.ClientPreparedStatement: insert into time_zone_test (id, create_time, update_time
      )
    values (null, '2022-09-04 11:22:33.937', '2022-09-04 11:22:33.937'
      )

數(shù)據庫中查看:

mysql> set time_zone='+08:00';
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | +08:00 |
+------------------+--------+
2 rows in set (0.03 sec)

mysql> select * from time_zone_test where id = 8;
+----+---------------------+---------------------+
| id | create_time         | update_time         |
+----+---------------------+---------------------+
|  8 | 2022-09-04 11:22:34 | 2022-09-04 11:22:34 |
+----+---------------------+---------------------+
1 row in set (0.04 sec)

mysql> set time_zone='+09:00';
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | +09:00 |
+------------------+--------+
2 rows in set (0.03 sec)

mysql> select * from time_zone_test where id = 8;
+----+---------------------+---------------------+
| id | create_time         | update_time         |
+----+---------------------+---------------------+
|  8 | 2022-09-04 11:22:34 | 2022-09-04 12:22:34 |
+----+---------------------+---------------------+
1 row in set (0.04 sec)

由此可以看出:

  • springboot程序是+08:00,serverTimezone設置的是+09:00,所以在組裝sql語句的時候會給時間+1
  • 執(zhí)行sql語句時,就是在mysql服務器默認時區(qū)(+08:00)進行的,可以根據update_time的值判斷,如果是在+09:00執(zhí)行的,那么在+08:00查詢出來的時間就會少1小時,實際上并沒有
  • 從2也能看出,serverTimezone設置的值并不是當前會話的時區(qū),只是告訴程序應該怎么轉換這個時間

例2

springboot項目所在操作系統(tǒng)的時區(qū)為:(UTC+08:00) 北京,重慶,香港特別行政區(qū),烏魯木齊

連接mysql設置serverTimezone=GMT%2B9,(UTC+09:00) 大阪,札幌,東京

當前時間:

  • (UTC+08:00) 北京 16:40(電腦時間)
  • (UTC+09:00) 大阪 17:40

mysql的默認時區(qū):+08:00

代碼邏輯:使用now()函數(shù)存入到數(shù)據庫(createTime、updateTime)

發(fā)給mysql的語句:

HikariProxyPreparedStatement@764739765 wrapping com.mysql.cj.jdbc.ClientPreparedStatement: insert into time_zone_test (id, create_time, update_time
      )
    values (null, now(), now()
      )

數(shù)據庫中查看:

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | SYSTEM |
+------------------+--------+
2 rows in set (0.05 sec)

mysql> select * from time_zone_test where id = 15;
+----+---------------------+---------------------+
| id | create_time         | update_time         |
+----+---------------------+---------------------+
| 15 | 2022-09-04 16:45:30 | 2022-09-04 16:45:30 |
+----+---------------------+---------------------+
1 row in set (0.05 sec)

mysql> set time_zone='+08:00';
Query OK, 0 rows affected (0.01 sec)

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | +08:00 |
+------------------+--------+
2 rows in set (0.05 sec)

mysql> select * from time_zone_test where id = 15;
+----+---------------------+---------------------+
| id | create_time         | update_time         |
+----+---------------------+---------------------+
| 15 | 2022-09-04 16:45:30 | 2022-09-04 16:45:30 |
+----+---------------------+---------------------+
1 row in set (0.07 sec)

mysql> set time_zone='+09:00';
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | +09:00 |
+------------------+--------+
2 rows in set (0.07 sec)

mysql> select * from time_zone_test where id = 15;
+----+---------------------+---------------------+
| id | create_time         | update_time         |
+----+---------------------+---------------------+
| 15 | 2022-09-04 16:45:30 | 2022-09-04 17:45:30 |
+----+---------------------+---------------------+
1 row in set (0.08 sec)

由此可以看出:

now()函數(shù)是在+08:00時區(qū)執(zhí)行的,與serverTimezone設置的值無關 例3

springboot項目所在操作系統(tǒng)的時區(qū)為:(UTC+00:00) 蒙羅維亞,雷克雅未克

連接mysql設置serverTimezone=GMT%2B8,(UTC+08:00) 北京,重慶,香港特別行政區(qū),烏魯木齊

當前時間:

  • (UTC+00:00) 蒙羅維亞 9:00(電腦時間)
  • (UTC+08:00) 北京 17:00

mysql的默認時區(qū):+00:00

代碼邏輯:獲取當前時間并存入到數(shù)據庫(createTime、updateTime)

程序的入參(查看打印的日志):

JDBC Connection [HikariProxyConnection@1876572082 wrapping com.mysql.cj.jdbc.ConnectionImpl@584e44f5] will not be managed by Spring
==>  Preparing: insert into time_zone_test (id, create_time, update_time ) values (?, ?, ? )
==> Parameters: null, 2022-09-04 09:10:41.157(Timestamp), 2022-09-04 09:10:41.157(Timestamp)
<==    Updates: 1

日志打印的是當前時間,但是這個并不是發(fā)給mysql的時間,發(fā)給mysql的時間會做時區(qū)轉換

發(fā)給mysql的時間:

HikariProxyPreparedStatement@419867077 wrapping com.mysql.cj.jdbc.ClientPreparedStatement: insert into time_zone_test (id, create_time, update_time
      )
    values (null, '2022-09-04 17:10:41.157', '2022-09-04 17:10:41.157'
      )

數(shù)據庫中查看:

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | +00:00 |
+------------------+--------+
2 rows in set (0.05 sec)

mysql> select * from time_zone_test where id = 16;
+----+---------------------+---------------------+
| id | create_time         | update_time         |
+----+---------------------+---------------------+
| 16 | 2022-09-04 17:10:41 | 2022-09-04 17:10:41 |
+----+---------------------+---------------------+
1 row in set (0.05 sec)

mysql> set time_zone='+08:00';
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | +08:00 |
+------------------+--------+
2 rows in set (0.07 sec)

mysql> select * from time_zone_test where id = 16;
+----+---------------------+---------------------+
| id | create_time         | update_time         |
+----+---------------------+---------------------+
| 16 | 2022-09-04 17:10:41 | 2022-09-05 01:10:41 |
+----+---------------------+---------------------+
1 row in set (0.09 sec)

由此可以看出:

  • springboot程序是+00:00,serverTimezone設置的是+08:00,所以在組裝sql語句的時候會給時間+8
  • 執(zhí)行sql語句時,在mysql服務器默認時區(qū)(+00:00)進行的,將發(fā)送過來的17點,在+00:00時區(qū)執(zhí)行保存
  • 將時區(qū)調整為+08:00進行查詢,會發(fā)現(xiàn)update_time時間又增加了8,這是正確的

例4

springboot項目所在操作系統(tǒng)的時區(qū)為:(UTC+00:00) 蒙羅維亞,雷克雅未克

連接mysql設置serverTimezone=GMT%2B8,(UTC+08:00) 北京,重慶,香港特別行政區(qū),烏魯木齊

當前時間:

  • (UTC+00:00) 蒙羅維亞 9:30(電腦時間)
  • (UTC+08:00) 北京 17:30

mysql的默認時區(qū):+00:00

代碼邏輯:使用now()函數(shù)存入到數(shù)據庫(createTime、updateTime)

發(fā)給mysql的語句:

HikariProxyPreparedStatement@1333630381 wrapping com.mysql.cj.jdbc.ClientPreparedStatement: insert into time_zone_test (id, create_time, update_time
      )
    values (null, now(), now()
      )

數(shù)據庫中查看:

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | +00:00 |
+------------------+--------+
2 rows in set (0.03 sec)

mysql> select * from time_zone_test where id = 17;
+----+---------------------+---------------------+
| id | create_time         | update_time         |
+----+---------------------+---------------------+
| 17 | 2022-09-04 09:30:26 | 2022-09-04 09:30:26 |
+----+---------------------+---------------------+
1 row in set (0.06 sec)

mysql> set time_zone='+08:00';
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | +08:00 |
+------------------+--------+
2 rows in set (0.06 sec)

mysql> select * from time_zone_test where id = 17;
+----+---------------------+---------------------+
| id | create_time         | update_time         |
+----+---------------------+---------------------+
| 17 | 2022-09-04 09:30:26 | 2022-09-04 17:30:26 |
+----+---------------------+---------------------+
1 row in set (0.06 sec)

由此可以看出:

now()函數(shù)是在+00:00時區(qū)執(zhí)行的,與serverTimezone設置的值無關

查詢數(shù)據時,程序時區(qū)、serverTimezone時區(qū)不一致導致的時間轉換問題

查詢數(shù)據時,也會對時間類型的數(shù)據進行轉換

例5

環(huán)境與例4一致,進行查詢操作

從mysql查詢回來的數(shù)據(查看打印的日志):

JDBC Connection [HikariProxyConnection@1625710104 wrapping com.mysql.cj.jdbc.ConnectionImpl@109c4ff6] will not be managed by Spring
==>  Preparing: select id, create_time, update_time from time_zone_test where id = ?
==> Parameters: 17(Integer)
<==    Columns: id, create_time, update_time
<==        Row: 17, 2022-09-04 09:30:26, 2022-09-04 09:30:26
<==      Total: 1

實際展示的數(shù)據(接口進行查詢操作)

{
  "id": 17,
  "createTime": "2022-09-04T01:30:26.000+00:00",
  "updateTime": "2022-09-04T01:30:26.000+00:00"
}

由此可以看出:

  • mysql從+00:00時區(qū)查詢出數(shù)據給到springboot程序
  • 由于設置了serverTimezone=GMT%2B8,程序會認為這是+08:00時區(qū)的數(shù)據,程序本身的時區(qū)是+00:00,所以轉換成java對象數(shù)據時進行了-8操作,展示的數(shù)據也是-8后的結果
  • 添加數(shù)據時,是9:30 +00:00,查出來的數(shù)據是1:30 +00:00,這明顯是不一致的,原因就在于serverTimezone設置的時區(qū)與mysql默認的時區(qū)不一致,其實使用now()函數(shù),可以理解為保存的數(shù)據庫中的數(shù)據是準確的。如果由程序生成時間,那么發(fā)送給mysql時會發(fā)生時間轉換,此時保存到mysql中的數(shù)據就可以理解為是不準確的,即使查詢展示的數(shù)據可能是對的

如果進行格式化,顯示+08:00的時間

配置:

spring:
  jackson:
    time-zone: GMT+8   

顯示:

{
  "id": 17,
  "createTime": "2022-09-04T09:30:26.000+08:00",
  "updateTime": "2022-09-04T09:30:26.000+08:00"
}

總結

避免數(shù)據錯誤,serverTimezone設置的值一定要和mysql默認的時區(qū)一致(可以通過配置文件指定)

不要輕易切換mysql的默認時區(qū),如果程序不對應修改serverTimezone的值會造成數(shù)據錯誤

建議mysql默認時區(qū)使用+08:00時區(qū),datetime類型的數(shù)據實際可以理解為是字符串,是不變的,比如,保存數(shù)據時,使用的是+00:00時區(qū),保存的就是+00:00時區(qū)的對應的值,雖然如果配置正確,程序可以轉換成我們想要的+08:00時區(qū)的值,但是畢竟數(shù)據庫中存儲的就是當時+00:00時區(qū)的對應的值,所以還是建議mysql默認時區(qū)使用+08:00時區(qū),儲存的時間就是我們用的時間

程序所在的時區(qū)應該可以任意,但是用戶輸入的時間類型的數(shù)據就需要特殊關注,比如,程序的時區(qū)是+00:00時區(qū),用戶輸入的數(shù)據是+08:00時區(qū)數(shù)據,那就得明確告訴程序用戶輸入的是+08:00時區(qū)的數(shù)據。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • mysql8查看鎖信息

    mysql8查看鎖信息

    MYSQL中有一個重要的特性就是鎖,下面這篇文章主要給大家介紹了關于mysql8查看鎖信息的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • mysql cmd常用命令

    mysql cmd常用命令

    mysql cmd常用命令,偶爾需要命令行執(zhí)行mysql的朋友可以參考下。
    2011-05-05
  • linux環(huán)境下安裝mysql數(shù)據庫的詳細教程

    linux環(huán)境下安裝mysql數(shù)據庫的詳細教程

    這篇文章主要介紹了linux環(huán)境下安裝mysql數(shù)據庫的詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 使用MyDumper重建MySQL副本的實現(xiàn)

    使用MyDumper重建MySQL副本的實現(xiàn)

    本文主要介紹了MyDumper重建MySQL副本的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-03-03
  • MySQL存儲時間類型選擇的問題講解

    MySQL存儲時間類型選擇的問題講解

    今天小編就為大家分享一篇關于MySQL存儲時間類型選擇的問題講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MySQL重置root密碼提示

    MySQL重置root密碼提示"Unknown column ‘password"的解決方法

    這篇文章主要介紹了MySQL重置root密碼提示"Unknown column ‘password"的解決方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • Mysql索引會失效的幾種情況分析

    Mysql索引會失效的幾種情況分析

    在做項目的過程中,難免會遇到明明給mysql建立了索引,可是查詢還是很緩慢的情況出現(xiàn),下面我們來具體分析下這種情況出現(xiàn)的原因及解決方法
    2014-06-06
  • MySQL?8.0版本配置my.cnf?/?my.ini各項配置示例詳解

    MySQL?8.0版本配置my.cnf?/?my.ini各項配置示例詳解

    在MySQL 8.0版本之前,MySQL使用的是名為my.ini的配置文件來配置數(shù)據庫服務器,這篇文章主要介紹了MySQL?8.0版本配置my.cnf?/?my.ini各項配置的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-11-11
  • 快速學習MySQL索引的入門超級教程

    快速學習MySQL索引的入門超級教程

    這篇文章主要介紹了快速學習MySQL索引的入門教程,包括索引的創(chuàng)建和刪除等基礎知識,需要的朋友可以參考下
    2015-11-11
  • Mysql之索引的數(shù)據結構詳解

    Mysql之索引的數(shù)據結構詳解

    索引是存儲引擎用于快速找到數(shù)據記錄的一種數(shù)據結構,類似于教科書的目錄部分,在MySQL中,索引可以加速數(shù)據查找,減少磁盤I/O的次數(shù),提高查詢速率,但是,創(chuàng)建和維護索引需要耗費時間,并且索引需要占磁盤空間,在InnoDB中,索引的實現(xiàn)基于B+樹結構
    2024-12-12

最新評論

普格县| 华池县| 潼关县| 石柱| 安丘市| 陈巴尔虎旗| 浙江省| 龙门县| 兴山县| 陕西省| 南木林县| 孟村| 双城市| 滦平县| 蓬安县| 福贡县| 公安县| 清新县| 三原县| 临颍县| 同江市| 加查县| 长沙市| 桃源县| 巴彦县| 南岸区| 禄劝| 香河县| 南部县| 通州区| 临湘市| 贵南县| 遵义县| 顺平县| 四川省| 西和县| 克什克腾旗| 永吉县| 辉县市| 冀州市| 深州市|