自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL數(shù)據(jù)庫性能進行優(yōu)化三大絕招

數(shù)據(jù)庫 MySQL
以下的文章主要介紹的是對MySQL數(shù)據(jù)庫性能進行優(yōu)化的的幾大絕招,其中包括選取最適用的字段屬性,使用連接(JOIN)來代替子查詢(Sub-Queries),使用聯(lián)合 (UNION)來代替手動創(chuàng)建的臨時表的內(nèi)容介紹。

以下的文章主要介紹的是對MySQL數(shù)據(jù)庫性能進行優(yōu)化的的幾大絕招,其中包括選取最適用的字段屬性,使用連接(JOIN)來代替子查詢(Sub-Queries),使用聯(lián)合 (UNION)來代替手動創(chuàng)建的臨時表的內(nèi)容介紹。

1. 選取最適用的字段屬性

MySQL可以很好的支持大數(shù)據(jù)量的存取,但是一般說來,數(shù)據(jù)庫中的表越小,在它上面執(zhí)行的查詢也就會越快。因此,在創(chuàng)建表的時候,為了獲得更好的性能,我們可以將表中字段的寬度設(shè)得盡可能小。例如,在定義郵政編碼這個字段時,如果將其設(shè)置為CHAR(255),顯然給數(shù)據(jù)庫增加了不必要的空間,甚至使用VARCHAR這種類型也是多余的,因為CHAR(6)就可以很好的完成任務(wù)了。同樣的,如果可以的話,我們應(yīng)該使用MEDIUMINT而不是BIGIN來定義整型字段。

另外一個提高效率的方法是在可能的情況下,應(yīng)該盡量把字段設(shè)置為NOT NULL,這樣在將來執(zhí)行查詢的時候,數(shù)據(jù)庫不用去比較NULL值。

對于某些文本字段,例如“省份”或者“性別”,我們可以將它們定義為ENUM類型。因為在MySQL中,ENUM類型被當(dāng)作數(shù)值型數(shù)據(jù)來處理,而數(shù)值型數(shù)據(jù)被處理起來的速度要比文本類型快得多。這樣,我們又可以提高數(shù)據(jù)庫的性能。

2. 使用連接(JOIN)來代替子查詢(Sub-Queries)

MySQL從 4.1開始支持SQL的子查詢。這個技術(shù)可以使用 SELECT語句來創(chuàng)建一個單列的查詢結(jié)果,然后把這個結(jié)果作為過濾條件用在另一個查詢中。例如,我們要將客戶基本信息表中沒有任何訂單的客戶刪除掉,就可以利用子查詢先從銷售信息表中將所有發(fā)出訂單的客戶ID取出來,然后將結(jié)果傳遞給主查詢,如下所示:

DELETE FROM customerinfo

WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )
使用子查詢可以一次性的完成很多邏輯上需要多個步驟才能完成的SQL操作,同時也可以避免事務(wù)或者表鎖死,并且寫起來也很容易。但是,有些情況下,子查詢可以被更有效率的連接(JOIN)替代。例如,假設(shè)我們要將所有沒有訂單記錄的用戶取出來,可以用下面這個查詢完成:

SELECT * FROM customerinfo

WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )

如果使用連接(JOIN)來完成這個查詢工作,速度將會快很多。尤其是當(dāng)salesinfo表中對CustomerID建有索引的話,性能將會更好,查詢?nèi)缦拢?/p>

SELECT * FROM customerinfo

LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo.

CustomerID

WHERE salesinfo.CustomerID IS NULL

連接(JOIN)之所以更有效率一些,是因為 MySQL不需要在內(nèi)存中創(chuàng)建臨時表來完成這個邏輯上的需要兩個步驟的查詢工作。

3. 使用聯(lián)合 (UNION)來代替手動創(chuàng)建的臨時表

MySQL 從 4.0 的版本開始支持 UNION 查詢,它可以把需要使用臨時表的兩條或更多的 SELECT 查詢合并的一個查詢中。在客戶端的查詢會話結(jié)束的時候,臨時表會被自動刪除,從而保證數(shù)據(jù)庫整齊、高效。使用 UNION 來創(chuàng)建查詢的時候,我們只需要用 UNION作為關(guān)鍵字把多個 SELECT 語句連接起來就可以了,要注意的是所有 SELECT 語句中的字段數(shù)目要想同。下面的例子就演示了一個使用 UNION的查詢。

SELECT Name, Phone FROM client

UNION
SELECT Name, BirthDate FROM author
UNION SELECT Name, Supplier FROM product
上述的相關(guān)內(nèi)容就是對于優(yōu)化MySQL數(shù)據(jù)庫性能的“妙手”的描述,希望會給你帶來一些幫助在此方面。

【編輯推薦】

  1. MySQL數(shù)據(jù)庫的無縫遷移
  2. 論MySQL數(shù)據(jù)庫中兩種數(shù)據(jù)引擎的差別
  3. MySQL數(shù)據(jù)庫的主從配置
  4. 解析向MySQL數(shù)據(jù)庫的表中錄入數(shù)據(jù)的方法
責(zé)任編輯:迎迎 來源: 比特網(wǎng)
相關(guān)推薦

2023-01-05 08:42:47

數(shù)據(jù)庫優(yōu)化方案

2010-06-03 09:39:24

優(yōu)化MySQL性能

2022-04-25 11:12:08

數(shù)據(jù)庫優(yōu)化性能

2009-06-30 22:31:23

關(guān)鍵參數(shù)MySQL性能優(yōu)化

2013-09-17 10:32:08

Android性能優(yōu)化數(shù)據(jù)庫

2011-03-03 13:43:29

2011-03-03 17:56:52

MySQL數(shù)據(jù)庫優(yōu)化

2023-03-13 00:01:10

數(shù)據(jù)庫性能MySQL

2021-01-31 17:50:41

數(shù)據(jù)庫查詢程序員

2011-05-20 10:30:20

ORACLE數(shù)據(jù)庫性能優(yōu)化

2011-05-18 09:39:19

Oracle數(shù)據(jù)庫性能優(yōu)化

2023-07-12 08:55:16

PawSQL數(shù)據(jù)庫

2011-03-08 08:49:55

MySQL優(yōu)化單機

2010-05-10 15:50:39

Oracle數(shù)據(jù)庫性能

2010-08-12 18:00:56

DB2數(shù)據(jù)庫

2010-05-21 13:48:36

MySQL數(shù)據(jù)庫

2010-05-31 16:17:56

MySQL數(shù)據(jù)庫性能

2010-06-02 13:58:30

MySQL數(shù)據(jù)庫性能

2024-03-14 10:10:03

MySQL優(yōu)化事務(wù)

2024-01-18 09:43:11

MySQL數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號