国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

一個(gè)單引號(hào)引發(fā)的MYSQL性能問題分析

2024-07-24 13:03:20
字體:
供稿:網(wǎng)友
對(duì)于大型的系統(tǒng)而言,Oracle,SQLServer無疑是最好的選擇,可看看現(xiàn)在越來越多的小網(wǎng)站,他們沒有自己的服務(wù)器,只是買別人的空間和數(shù)據(jù)庫,但這種小型的數(shù)據(jù)庫在性能上當(dāng)然和大型數(shù)據(jù)庫沒有對(duì)比性,但小型的數(shù)據(jù)庫也要對(duì)自己的優(yōu)化方式,今天和大家分享Mysql中加沒加單引號(hào)的巨大區(qū)別,對(duì)于MYSQL性能優(yōu)化很有意義。

剛剛我們說過了,生活中難免會(huì)有一些不如意,比如,我們用一個(gè)字符串類型的字段來作為主鍵,表面上,這太不如意了,然而,事實(shí)也證明這是有用的。問題也就出來了,當(dāng)在查詢語句中對(duì)該字段值加上單引號(hào)和不加查詢耗時(shí)相差百倍!

測試表:

復(fù)制代碼 代碼如下:


CREATE TABLE `foo` ( `key` varchar(10) NOT NULL, `time` int(11) NOT NULL, PRIMARY KEY (`key`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;


然后插入30多萬條數(shù)據(jù),然后執(zhí)行下面的SQL語句:

復(fù)制代碼 代碼如下:


SELECT *FROM `foo`WHERE `key` =1293322797


查詢花費(fèi) 0.1288 秒,大約花費(fèi)這么久的時(shí)間,然后,給1293322797加上單引號(hào):

復(fù)制代碼 代碼如下:


SELECT *FROM `foo`WHERE `key` ='1293322797'


查詢花費(fèi) 0.0009 秒,基本上相差100倍!!!也就是說不加單引號(hào)MYSQL性能損失了100倍,很震撼的比例!

后來用EXPLAIN分別跑了一下上面兩條語句,見下面兩張圖:

一個(gè)單引號(hào)引發(fā)的MYSQL性能問題分析


沒有單引號(hào)時(shí)

一個(gè)單引號(hào)引發(fā)的MYSQL性能問題分析


有單引號(hào)時(shí)

很明顯,不使用單引號(hào)沒有用上主索引,并進(jìn)行了全表掃描,使用單引號(hào)就能使用上索引了。
后來我用大于分別進(jìn)行了測試,返回的結(jié)果集相同,而他們的耗時(shí)和上面一樣,用EXPLAIN測試,也和上面一樣

復(fù)制代碼 代碼如下:


SELECT *FROM `foo`WHERE `key` >1293322797SELECT *FROM `foo`WHERE `key` >'1293322797'


加單引號(hào)和不加單引號(hào)就是這么大的差別!就是會(huì)對(duì)mysql性能產(chǎn)生這么大的影響。
再后來,我將字段`key`換成INT類型,這時(shí)候,加不加單引號(hào),就沒有什么差別了,EXPLAIN顯示他們都同樣能夠用上主索引,只是key_len變短了。

一個(gè)單引號(hào)引發(fā)的MYSQL性能問題分析

 

就是這些,綜上所述,我們?cè)趯慡QL查詢的時(shí)候還是不厭其煩的加上單引號(hào)吧,似乎那沒有壞處。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 墨江| 龙游县| 台南市| 马鞍山市| 普格县| 特克斯县| 东乡| 诸暨市| 长阳| 读书| 治多县| 台南县| 虞城县| 启东市| 四平市| 呼伦贝尔市| 夏邑县| 墨脱县| 广安市| 定州市| 东莞市| 平乡县| 平果县| 晋江市| 北流市| 曲麻莱县| 阿拉善右旗| 孟州市| 防城港市| 神木县| 乌兰浩特市| 乌兰察布市| 荥经县| 张家港市| 晋城| 驻马店市| 泌阳县| 修武县| 宝丰县| 洪湖市| 长乐市|