深入mysql基礎(chǔ)知識(shí)的詳解
1.每個(gè)客戶端連接都會(huì)從服務(wù)器進(jìn)程中分到一個(gè)屬于它的線程。而該連接的相應(yīng)查詢都都會(huì)通過該線程處理。
2.服務(wù)器會(huì)緩存線程。因此并不會(huì)為每個(gè)新連接創(chuàng)建或者銷毀線程。
3.當(dāng)發(fā)起對(duì)MySQL服務(wù)器的連接時(shí),服務(wù)器會(huì)對(duì) username,host,password進(jìn)行驗(yàn)證。而一旦連接上,服務(wù)器就會(huì)檢測(cè)其權(quán)限。
4.MySQL查詢緩存只會(huì)保存 SELECT 語(yǔ)句和相應(yīng)的結(jié)果。在解析查詢之前會(huì)詢問查詢緩存,如果查詢緩存中能找到相應(yīng)的結(jié)果就直接返回結(jié)果。
5.MySQL的 data 文件夾下會(huì)根據(jù)每個(gè)數(shù)據(jù)庫(kù)建立一個(gè)相應(yīng)名稱的文件夾。而每一張表對(duì)應(yīng)的有三個(gè)不同后綴的文件:.frm,.MYD,.MYI。其中 .frm 后綴的文件用來存儲(chǔ)表的定義。.MYD(mysql data)存儲(chǔ)的是數(shù)據(jù),而.MYI(mysql index)存儲(chǔ)的是索引。
6.關(guān)于IP的存儲(chǔ)類型選擇。別再使用 varchar(15) 了,應(yīng)該使用 INT UNSIGNED。而且最好是使用PHP的內(nèi)置函數(shù)ip2long()和 long2ip() 來處理,而不是使用 MySQL 的函數(shù) INET_ATON() 和 INET_NTOA()。盡可能地將計(jì)算和轉(zhuǎn)換之類的東西交給程序來完成。存儲(chǔ)為 INT 不僅節(jié)省了空間,而且利于查詢。比如我想要查詢出某個(gè)IP段的所有IP,varchar 是沒辦法進(jìn)行的。
7. B+Tree 索引保存數(shù)據(jù)的順序和建表時(shí)的字段順序一致。InnoDB會(huì)自動(dòng)在內(nèi)存中為一些被頻繁訪問的索引值建立內(nèi)存索引以加快速度。
8.以下查詢會(huì)引起索引失效:
SELECT name FROM user WHERE id+1=4; // mysql不會(huì)從計(jì)算中去分析出id是有索引的
SELECT name FROM user WHERE TO_DAYS(birth) > 20; // mysql索引的是birth本身,而不是TO_DAYS()轉(zhuǎn)化之后的數(shù)據(jù)
1.復(fù)制表結(jié)構(gòu)
CREATE TABLE b LIKE a;
2.更改存儲(chǔ)引擎
ALTER TABLE a ENGINE=InnoDB;
3.復(fù)制表數(shù)據(jù)
INSERT INTO b SELECT * FROM a;
4.獲取表信息
SHOW TABLE STATUS LIKE '%XXX%'; // 獲取表名符合LIKE的表信息。
SHOW TABLE STATUS FROM `數(shù)據(jù)庫(kù)名`; // 獲取該數(shù)據(jù)庫(kù)下所有表的信息
5.清空二進(jìn)制日志
RESET MASTER;
6.返回某字段前X個(gè)字符
SELECT LEFT(name, 3) AS pre_name FROM user;
7.為某字段添加前綴索引
ALERT TABLE xxx ADD KEY (name(3));
8.避免讀取不必要的行,使用索引覆蓋查詢
SELECT * FROM JOIN (SELECT prod_id FROM products WHERE actor='SEAN CARREY' AND
title LIKE '%APOLLO%') AS t ON (t.prod_id=products.prod_id); // 其中actor有索引
相關(guān)文章
MySQL學(xué)習(xí)之SQL語(yǔ)法及SQL解析順序
這篇文章主要介紹了SQL語(yǔ)法及SQL解析順序,SQL(Structured Query Language)是一種標(biāo)準(zhǔn),作為一種訪問關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,感興趣的小伙伴可以借鑒閱讀2023-03-03詳解mysql中的concat相關(guān)函數(shù)
這篇文章主要介紹了mysql中的concat相關(guān)函數(shù),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11解析Mysql備份與恢復(fù)簡(jiǎn)單總結(jié)與tee命令的使用介紹
本篇文章是對(duì)Mysql備份與恢復(fù)簡(jiǎn)單總結(jié)與tee命令的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06mysql如何比對(duì)兩個(gè)數(shù)據(jù)庫(kù)表結(jié)構(gòu)的方法
這篇文章主要介紹了mysql如何比對(duì)兩個(gè)數(shù)據(jù)庫(kù)表結(jié)構(gòu)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09在MySQL數(shù)據(jù)庫(kù)中使用C執(zhí)行SQL語(yǔ)句的方法
與PostgreSQL相似,可使用許多不同的語(yǔ)言來訪問MySQL,包括C、C++、Java和Perl。從Professional Linux Programming中第5章有關(guān)MySQL的下列章節(jié)中,Neil Matthew和Richard Stones使用詳盡的MySQL C接口向我們介紹了如何在MySQL數(shù)據(jù)庫(kù)中執(zhí)行SQL語(yǔ)句。2012-10-10mysql處理海量數(shù)據(jù)時(shí)的一些優(yōu)化查詢速度方法
最近一段時(shí)間由于工作需要,開始關(guān)注針對(duì)Mysql數(shù)據(jù)庫(kù)的select查詢語(yǔ)句的相關(guān)優(yōu)化方法,需要的朋友可以參考下2017-04-04mysql5.7創(chuàng)建用戶授權(quán)刪除用戶撤銷授權(quán)
這篇文章主要介紹了mysql5.7創(chuàng)建用戶授權(quán)刪除用戶撤銷授權(quán)的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02MySQL8.0數(shù)據(jù)庫(kù)開窗函數(shù)圖文詳解
開窗函數(shù)為將要被操作的行的集合定義一個(gè)窗口,它對(duì)一組值進(jìn)行操作,不需要使用GROUP BY子句對(duì)數(shù)據(jù)進(jìn)行分組,能夠在同一行中同時(shí)返回基礎(chǔ)行的列和聚合列,這篇文章主要給大家介紹了關(guān)于MySQL8.0數(shù)據(jù)庫(kù)開窗函數(shù)的相關(guān)資料,需要的朋友可以參考下2023-06-06