深刻mysql基本常識的詳解。本站提示廣大學習愛好者:(深刻mysql基本常識的詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻mysql基本常識的詳解正文
1.每一個客戶端銜接都邑從辦事器過程平分到一個屬於它的線程。而該銜接的響應查詢都都邑經由過程該線程處置。
2.辦事器會緩存線程。是以其實不會為每一個新銜接創立或許燒毀線程。
3.當提議對MySQL辦事器的銜接時,辦事器會對 username,host,password停止驗證。而一旦銜接上,辦事器就會檢測其權限。
4.MySQL查詢緩存只會保留 SELECT 語句和響應的成果。在解析查詢之前會訊問查詢緩存,假如查詢緩存中能找到響應的成果就直接前往成果。
5.MySQL的 data 文件夾下會依據每一個數據庫樹立一個響應稱號的文件夾。而每張表對應的有三個分歧後綴的文件:.frm,.MYD,.MYI。個中 .frm 後綴的文件用來存儲表的界說。.MYD(mysql data)存儲的是數據,而.MYI(mysql index)存儲的是索引。
6.關於IP的存儲類型選擇。別再應用 varchar(15) 了,應當應用 INT UNSIGNED。並且最好是應用PHP的內置函數ip2long()和 long2ip() 來處置,而不是應用 MySQL 的函數 INET_ATON() 和 INET_NTOA()。盡量地將盤算和轉換之類的器械交給法式來完成。存儲為 INT 不只節儉了空間,並且利於查詢。好比我想要查詢出某個IP段的一切IP,varchar 是沒方法停止的。
7. B+Tree 索引保留數據的次序和建表時的字段次序分歧。InnoDB會主動在內存中為一些被頻仍拜訪的索引值樹立內存索引以加速速度。
8.以下查詢會惹起索引掉效:
SELECT name FROM user WHERE id+1=4; // mysql不會從盤算中去剖析出id是有索引的
SELECT name FROM user WHERE TO_DAYS(birth) > 20; // mysql索引的是birth自己,而不是TO_DAYS()轉化以後的數據
1.復制表構造
CREATE TABLE b LIKE a;
2.更改存儲引擎
ALTER TABLE a ENGINE=InnoDB;
3.復制表數據
INSERT INTO b SELECT * FROM a;
4.獲得表信息
SHOW TABLE STATUS LIKE '%XXX%'; // 獲得表名相符LIKE的表信息。
SHOW TABLE STATUS FROM `數據庫名`; // 獲得該數據庫下一切表的信息
5.清空二進制日記
RESET MASTER;
6.前往某字段前X個字符
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有索引