国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mysql的datetime字段建立索引并比較大小

這篇具有很好參考價(jià)值的文章主要介紹了mysql的datetime字段建立索引并比較大小。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、問題背景

最近測試庫查詢一個(gè)表的數(shù)據(jù),需要用到唯一的一個(gè)日期類型字段作為 where 的子查詢(查詢當(dāng)天的數(shù)據(jù)),就正常寫了個(gè)這樣的 SQL,具體的表名我就不寫了:

# create_time 是 datetime 類型
select * from ${tablename} where date(create_time)='20220919' limit 20;

其中字段的值樣本如下:
mysql的datetime字段建立索引并比較大小
我知道我寫的這條 SQL 即使在 create_time 這個(gè)列有索引的情況下也不會走索引,但是執(zhí)行了以后就 wc 了:
mysql的datetime字段建立索引并比較大小
NM!20條記錄你查詢需要 8 s!
這種問題要不優(yōu)化都不敢說自己是農(nóng)民工!

2、優(yōu)化過程

1) 操作索引

首先我看了下這個(gè)表的索引:

show index from ${tablename};

一看,尼瑪,有一個(gè)列對應(yīng)了 2 個(gè)索引字段,也就是 create_time 沒有索引,我就干掉其中一個(gè)重復(fù)的并在 create_time 上建了一個(gè)(表名我就不寫了):

#刪除索引
drop index index_create_time on ${tablename};
#添加索引
create index index_create_time on {tablename}(create_time);

2)是否走索引判斷

有索引了關(guān)鍵是得讓它走索引啊,先驗(yàn)證一下,我用執(zhí)行計(jì)劃繼續(xù)執(zhí)行了上面問題背景中的那個(gè)sql:

explain select * from ${tablename} where date(create_time)='20220919' limit 20;

結(jié)果如下,一點(diǎn)都不意外,照樣全表掃描:
mysql的datetime字段建立索引并比較大小

3)datetime使用索引查詢

既然不能操作索引列,我又想查詢某一天的數(shù)據(jù),就只能用范圍了,范圍的就那個(gè)幾個(gè),between…and 、> 、<
于是,我寫了下面查詢 SQL:

select * from ${tablename} where create_time between '2022-09-19 00:00:00' and '2022-09-19 23:59:59';

果然不辜負(fù)我的小操作,查詢結(jié)果如下:
mysql的datetime字段建立索引并比較大小
查詢 1850 條數(shù)據(jù)平均在 0.5 s,這不用說,絕壁走了索引,一個(gè)查詢 20 條花費(fèi) 8s,一個(gè)小 2 千記錄花費(fèi)半秒,沒有可比性。

下面驗(yàn)證這個(gè)查詢,同樣在 sql 前加上 explain 后執(zhí)行:
mysql的datetime字段建立索引并比較大小
沒毛病,索引類型 range,between…and 走的就是這種范圍索引,這種范圍類型的索引結(jié)構(gòu)開銷是有點(diǎn)大的,大到一定程度就不走索引了,比如在性別字段上建索引!文章來源地址http://www.zghlxwxcb.cn/news/detail-401734.html

到了這里,關(guān)于mysql的datetime字段建立索引并比較大小的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • mysql 索引 區(qū)分字符大小寫

    mysql 索引 區(qū)分字符大小寫

    mysql 建立索引,特別是unique索引,是跟字符集、字符排序規(guī)則有關(guān)的。 對于utf8mb4_0900_ai_ci來說,0900代表Unicode?9.0的規(guī)范,ai表示accent insensitivity,也就是“不區(qū)分音調(diào)”,而ci表示case insensitivity,也就是“不區(qū)分大小寫”。 上述這種數(shù)據(jù),如果選了? 那么會報(bào)錯(cuò),因?yàn)閙ysql認(rèn)

    2024年02月12日
    瀏覽(29)
  • [20230517]建立索引導(dǎo)致的性能問題2.txt

    [20230517]建立索引導(dǎo)致的性能問題2.txt --//生產(chǎn)系統(tǒng)遭遇建立索引導(dǎo)致的性能問題,建立的sql profile里面包含索引名提示,很少見,改索引名導(dǎo)致sql profile失效, --//當(dāng)然我遇到的情況有一點(diǎn)點(diǎn)不同,建立新索引,然后舊索引設(shè)置不可見(相當(dāng)于改名),具體看下面的測試環(huán)境模擬. 1.環(huán)境: SC

    2024年02月06日
    瀏覽(16)
  • mysql 為大表新增字段或索引

    mysql 為大表新增字段或索引

    mysql 為大表增加或增加索引等操作時(shí),直接操作原表可能會因?yàn)閳?zhí)行超時(shí)而導(dǎo)致失敗。解決辦法如下。 (1) 建新表 -復(fù)制表A 的數(shù)據(jù)結(jié)構(gòu),不復(fù)制數(shù)據(jù) (2) 加字段或索引 -表B加上新字段或索引 (3) 導(dǎo)數(shù)據(jù)到新表 -把原有數(shù)據(jù)導(dǎo)入新表? ?????????未新增字段時(shí) ?????

    2024年01月18日
    瀏覽(20)
  • MySQL 使用規(guī)范 —— 如何建好字段和索引

    MySQL 使用規(guī)范 —— 如何建好字段和索引

    一、案例背景 二、庫表規(guī)范 1. 建表相關(guān)規(guī)范 2. 字段相關(guān)規(guī)范 3. 索引相關(guān)規(guī)范 4. 使用相關(guān)規(guī)范 三、建表語句 三、語句操作 1. 插入操作 2. 查詢操作 四、其他配置 1. 監(jiān)控活動和性能: 2. 連接數(shù)查詢和配置 本文的宗旨在于通過簡單干凈實(shí)踐的方式教會讀者,如何更好地使用

    2024年02月09日
    瀏覽(24)
  • MySQL版本不同帶來Incorrect DATETIME value: ‘‘問題

    MySQL版本不同帶來Incorrect DATETIME value: ‘‘問題

    業(yè)務(wù)場景:線上數(shù)據(jù)同步到本地(開發(fā)測試) 版本:線上-5.7? ? 本地-8.0 嘗試操作方式: 1、SQL文件 2、備份還原 3、navicat自帶傳輸工具 最終結(jié)果:只能備份其中的部分?jǐn)?shù)據(jù),視圖同步下來出現(xiàn)??Incorrect DATETIME value: \\\'\\\' 問題 嘗試解決方案: 按上述操作之后又會出現(xiàn)新的錯(cuò)誤

    2024年02月13日
    瀏覽(24)
  • 面試官:MySQL表名和字段區(qū)分大小寫嘛

    嘮嗑部分 面試題:MySQL表名和字段區(qū)分大小寫嘛? 這個(gè)問題我們應(yīng)該這樣回答,MySQL列名是不區(qū)分大小寫的,表名在Windows環(huán)境下默認(rèn)不區(qū)分大小寫,在Linux環(huán)境默認(rèn)區(qū)分大小寫,提到默認(rèn)兩個(gè)字,那么就說明是可配置的 很多面試題網(wǎng)上都會有標(biāo)準(zhǔn)答案,那么小白為什么會單獨(dú)

    2024年02月07日
    瀏覽(26)
  • Mysql,創(chuàng)建/刪除表、添加表字段、修改表字段、添加索引等常用語句。

    ? ?以下方 user 表為例,講解如何Mysql創(chuàng)建表語句、添加表字段、修改表字段、添加索引等常用的SQL語句。 ? ? 出于編寫本篇文章的考慮,使用下方建表語句創(chuàng)建的? user表 有很多不合理的地方,例如:teacher_id 是 varchar類型而非 bigint類型、 \\\'創(chuàng)建時(shí)間\\\' 有2個(gè)字段 等。 大家在自

    2024年02月11日
    瀏覽(21)
  • spark讀取hive表字段,區(qū)分大小寫問題

    spark讀取hive表字段,區(qū)分大小寫問題

    背景 spark任務(wù)讀取hive表,查詢字段為小寫,但Hive表字段為大寫,無法讀取數(shù)據(jù) 問題錯(cuò)誤: 如何解決呢? In version 2.3 and earlier, when reading from a Parquet data source table, Spark always returns null for any column whose column names in Hive metastore schema and Parquet schema are in different letter cases, no matter wh

    2024年01月23日
    瀏覽(32)
  • 類型轉(zhuǎn)換與索引使用與字段緩存問題

    ** 1: 類型轉(zhuǎn)換與索引使用** 假設(shè)你有一個(gè)MySQL表格 users ,其中有一個(gè) age 列,數(shù)據(jù)類型是整數(shù)(INT),并且為該列創(chuàng)建了一個(gè)索引。然后你執(zhí)行以下查詢: 在這個(gè)查詢中,你將整數(shù)值 \\\'25\\\' 用作字符串來匹配 age 列。MySQL 可能會自動進(jìn)行類型轉(zhuǎn)換,將字符串轉(zhuǎn)換為整數(shù),然后再

    2024年02月13日
    瀏覽(26)
  • Golang通過Gorm操作Mysql時(shí)遇到的datetime時(shí)區(qū)問題

    Golang通過Gorm操作Mysql時(shí)遇到的datetime時(shí)區(qū)問題

    golang使用Gorm操作MySQL,MySQL中數(shù)據(jù)類型是datetime,Golang中用的是time.now。 但是會導(dǎo)致存儲的時(shí)間與北京時(shí)間有8h誤差, 顯然是沒有初始化時(shí)區(qū)導(dǎo)致。 參考我自己之前寫過的一篇總結(jié)——Mysql中多種日期類型——DATETIME、TIMESTAMP、TIME、YEAR、DATE的區(qū)分 datetime是給什么就存什么,

    2024年01月20日
    瀏覽(56)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包