MySQL名字的來(lái)歷 MySQL最初的開發(fā)者的意圖是用mSQL和他們自己的快速低級(jí)例程(ISAM)去連接表格。不管怎樣,在經(jīng)過(guò)一些測(cè)試后,開發(fā)者得出結(jié)論:mSQL并沒有他們需要的那么快和靈活。這導(dǎo)致了一個(gè)使用幾乎和mSQL一樣的API接口的用于他們的數(shù)據(jù)庫(kù)的新的SQL接口的產(chǎn)生,這樣,這個(gè)API被設(shè)計(jì)成允許為用于mSQL而寫的第三方代碼更容易移植到MySQL。
MySQL這個(gè)名字是怎么來(lái)的已經(jīng)不清楚了?;局改虾痛罅康膸?kù)和工具帶有前綴“my”已經(jīng)有10年以上,而且不管怎樣,MySQL AB創(chuàng)始人之一的Monty Widenius的女兒也叫My。這兩個(gè)到底是哪一個(gè)給出了MySQL這個(gè)名字至今依然是個(gè)迷,包括開發(fā)者在內(nèi)也不知道。
MySQL的海豚標(biāo)志的名字叫“sakila”,它是由MySQL AB的創(chuàng)始人從用戶在“海豚命名”的競(jìng)賽中建議的大量的名字表中選出的。獲勝的名字是由來(lái)自非洲斯威士蘭的開源軟件開發(fā)者Ambrose Twebaze提供。根據(jù)Ambrose所說(shuō),Sakila來(lái)自一種叫SiSwati的斯威士蘭方言,也是在Ambrose的家鄉(xiāng)烏干達(dá)附近的坦桑尼亞的Arusha的一個(gè)小鎮(zhèn)的名字。
MySQL的概述
MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。在2008年1月16號(hào)被Sun公司收購(gòu)。目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。MySQL的官方網(wǎng)站的網(wǎng)址是:www.mysql.com
MySQL的特性
1.使用C和C++編寫,并使用了多種
編譯器進(jìn)行測(cè)試,保證源代碼的可移植性
2.支持AIX、
FreeBSD、HP-UX、
Linux、Mac OS、
Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng)
3.為多種編程語(yǔ)言提供了API。這些編程語(yǔ)言包括
C、C++、Eiffel、Java、
Perl、
PHP、Python、Ruby和Tcl等。
4.支持
多線程,充分利用CPU資源
5.優(yōu)化的
SQL查詢算法,有效地提高查詢速度
6.既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫(kù)而嵌入到其他的軟件中提供多語(yǔ)言支持,常見的
編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名
7.提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫(kù)連接途徑
8.提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫(kù)操作的管理工具
9.可以處理?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)
MySQL的應(yīng)用
與其他的大型數(shù)據(jù)庫(kù)例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規(guī)模小、功能有限(MySQL Cluster的功能和效率都相對(duì)比較差)等,但是這絲毫也沒有減少它受歡迎的程度。對(duì)于一般的個(gè)人使用者和中小型企業(yè)來(lái)說(shuō),MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。
目前Internet上流行的網(wǎng)站構(gòu)架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作為操作系統(tǒng),Apache作為Web服務(wù)器,MySQL作為數(shù)據(jù)庫(kù),PHP作為服務(wù)器端腳本解釋器。由于這四個(gè)軟件都是遵循GPL的開放源碼軟件,因此使用這種方式不用花一分錢就可以建立起一個(gè)穩(wěn)定、免費(fèi)的網(wǎng)站系統(tǒng)。
MySQL管理
可以使用命令行工具管理MySQL數(shù)據(jù)庫(kù)(命令mysql 和 mysqladmin),也可以從MySQL的網(wǎng)站下載圖形管理工具M(jìn)ySQL Administrator和MySQL Query Browser。
phpMyAdmin是由php寫成的MySQL資料庫(kù)系統(tǒng)管理程式,讓管理者可用Web介面管理MySQL資料庫(kù)。
phpMyBackupPro也是由PHP寫成的,可以透過(guò)Web介面創(chuàng)建和管理數(shù)據(jù)庫(kù)。它可以創(chuàng)建偽cronjobs,可以用來(lái)自動(dòng)在某個(gè)時(shí)間或周期備份MySQL 數(shù)據(jù)庫(kù)。
另外,還有其他的GUI管理工具,例如早先的mysql-front 以及 ems mysql manager,navicat 等等。
Mysql存儲(chǔ)引擎
MyISAM Mysql的默認(rèn)數(shù)據(jù)庫(kù),最為常用。擁有較高的插入,查詢速度,但不支持事務(wù)
InnoDB 事務(wù)型數(shù)據(jù)庫(kù)的首選引擎,支持
ACID事務(wù),支持行級(jí)鎖定
BDB 源自Berkeley DB,事務(wù)型數(shù)據(jù)庫(kù)的另一種選擇,支持COMMIT和ROLLBACK等其他事務(wù)特性
Memory 所有數(shù)據(jù)置于內(nèi)存的存儲(chǔ)引擎,擁有極高的插入,更新和查詢效率。但是會(huì)占用和數(shù)據(jù)量成正比的內(nèi)存空間。并且其內(nèi)容會(huì)在Mysql重新啟動(dòng)時(shí)丟失
Merge 將一定數(shù)量的MyISAM表聯(lián)合而成一個(gè)整體,在超大規(guī)模數(shù)據(jù)存儲(chǔ)時(shí)很有用
Archive 非常適合存儲(chǔ)大量的獨(dú)立的,作為歷史記錄的數(shù)據(jù)。因?yàn)樗鼈儾唤?jīng)常被讀取。Archive擁有高效的插入速度,但其對(duì)查詢的支持相對(duì)較差
Federated 將不同的Mysql服務(wù)器聯(lián)合起來(lái),邏輯上組成一個(gè)完整的數(shù)據(jù)庫(kù)。非常適合分布式應(yīng)用
Cluster/NDB 高冗余的存儲(chǔ)引擎,用多臺(tái)數(shù)據(jù)機(jī)器聯(lián)合提供服務(wù)以提高整體性能和安全性。適合數(shù)據(jù)量大,安全和性能要求高的應(yīng)用
CSV 邏輯上由逗號(hào)分割數(shù)據(jù)的存儲(chǔ)引擎
BlackHole 黑洞引擎,寫入的任何數(shù)據(jù)都會(huì)消失,一般用于記錄binlog做復(fù)制的中繼
另外,Mysql的存儲(chǔ)引擎接口定義良好。有興趣的開發(fā)者通過(guò)閱讀文檔編寫自己的存儲(chǔ)引擎。
Mysql最常見的應(yīng)用架構(gòu)
單點(diǎn)(Single),適合小規(guī)模應(yīng)用
復(fù)制(Replication),適合中小規(guī)模應(yīng)用
集群(Cluster),適合大規(guī)模應(yīng)用
mysql歷史版本
MySQL公司目前在同時(shí)開發(fā)兩個(gè)版本的軟件,4.1版以及5.0版。4.1版本的代碼已經(jīng)發(fā)布并有望在8個(gè)月后公布最終代碼。而5.0版本的最后產(chǎn)品將在6個(gè)月后發(fā)布。
MySQL4.1版本中增加了不少新的性能,包括對(duì)主鍵的更高速度的緩存,對(duì)子查詢的更好的支持,以及應(yīng)網(wǎng)絡(luò)約會(huì)網(wǎng)站所要求的,基于地理信息的查詢。
而其同步開發(fā)的5.0版本則把目標(biāo)對(duì)準(zhǔn)了企業(yè)用戶,對(duì)于4.1版本中的所有新特性,5.0版本悉數(shù)收入囊中,并且獨(dú)具以下特點(diǎn):對(duì)外鍵的良好支持;系統(tǒng)自動(dòng)報(bào)錯(cuò)機(jī)制以及對(duì)存儲(chǔ)過(guò)程的充分支持。
Mysql現(xiàn)在現(xiàn)已開發(fā)出5.1版本支持視圖!
Mysql中文視頻教學(xué)
左光華的mysql網(wǎng)絡(luò)數(shù)據(jù)庫(kù)開發(fā)教學(xué)視頻http://www.tudou.com/playlist/mysql/
Mysql6.0的alpha版于2007年初發(fā)布,新版增加了對(duì)falcon存儲(chǔ)引擎的支持。Falcon是Mysql社區(qū)自主開發(fā)的引擎,支持ACID特性事務(wù),支持行鎖,擁有高性能的并發(fā)性。Mysql AB公司想用Falcon替代已經(jīng)非常流行的InnoDB引擎,因?yàn)閾碛泻笳呒夹g(shù)的InnoBase已經(jīng)被競(jìng)爭(zhēng)對(duì)手Oracle所收購(gòu)。
2008年1月16日,
Sun Microsystems宣布收購(gòu)MySQL AB,出價(jià)約10億美元現(xiàn)金包括期權(quán)。 http://www.mysql.com/news-and-events/sun-to-acquire-mysql.html
MySQL的基本命令
[ ]中的內(nèi)容為可選項(xiàng)
--創(chuàng)建數(shù)據(jù)庫(kù)
mysql> create database 數(shù)據(jù)庫(kù)名稱
--創(chuàng)建表
mysql> create table 表名 (
列的名字(id)類型(int(4))primary key(定義主鍵) auto_increment(描述 自增),
……,
?。?;
--查看所有數(shù)據(jù)庫(kù)
mysql> show databases 數(shù)據(jù)庫(kù)名稱;
--使用某個(gè)數(shù)據(jù)庫(kù)
mysql> use database 數(shù)據(jù)庫(kù)名稱;
--查看所使用數(shù)據(jù)庫(kù)下所有的表
mysql> show tables;
--顯示表的屬性結(jié)構(gòu)
mysql> desc 表名;
--選擇表中數(shù)據(jù)的顯示
--* 代表選擇所有列 ,
mysql> select * from 表名 where id=?[and name=?] [or name=?];
mysql> select id,name from 表名order by 某一列的名稱 desc(降序,asc為升序)
--刪除表中的數(shù)據(jù)
mysql> delete from table where id=?[or name=? (and name=?)];
--刪除表
mysql> drop table;
--刪除數(shù)據(jù)庫(kù)
mysql> drop database;
索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個(gè)組成部分),它們包含著對(duì)數(shù)據(jù)表里所有記錄的引用指針。
注:[1]索引不是萬(wàn)能的!索引可以加快數(shù)據(jù)檢索操作,但會(huì)使數(shù)據(jù)修改操作變慢。每修改數(shù)據(jù)記錄,索引就必須刷新一次。為了在某種程序上彌補(bǔ)這一缺陷,許多SQL命令都有一個(gè)DELAY_KEY_WRITE項(xiàng)。這個(gè)選項(xiàng)的作用是暫時(shí)制止 MySQL在該命令每插入一條新記錄和每修改一條現(xiàn)有之后立刻對(duì)索引進(jìn)行刷新,對(duì)索引的刷新將等到全部記錄插入/修改完畢之后再進(jìn)行。在需要把許多新記錄插入某個(gè)數(shù)據(jù)表的場(chǎng)合,DELAY_KEY_WRITE選項(xiàng)的作用將非常明顯。[2]另外,索引還會(huì)在硬盤上占用相當(dāng)大的空間。因此應(yīng)該只為最經(jīng)常查詢和最經(jīng)常排序的數(shù)據(jù)列建立索引。注意,如果某個(gè)數(shù)據(jù)列包含許多重復(fù)的內(nèi)容,為它建立索引就沒有太大的實(shí)際效果。
從理論上講,完全可以為數(shù)據(jù)表里的每個(gè)字段分別建一個(gè)索引,但MySQL把同一個(gè)數(shù)據(jù)表里的索引總數(shù)限制為16個(gè)。
1. InnoDB數(shù)據(jù)表的索引
與MyISAM數(shù)據(jù)表相比,在 InnoDB數(shù)據(jù)表上,索引對(duì)InnoDB數(shù)據(jù)表的重要性要在得多。在InnoDB數(shù)據(jù)表上,索引不僅會(huì)在搜索數(shù)據(jù)記錄時(shí)發(fā)揮作用,還是數(shù)據(jù)行級(jí)鎖定機(jī)制的苊、基礎(chǔ)。"數(shù)據(jù)行級(jí)鎖定"的意思是指在事務(wù)操作的執(zhí)行過(guò)程中鎖定正在被處理的個(gè)別記錄,不讓其他用戶進(jìn)行訪問(wèn)。這種鎖定將影響到(但不限于)SELECT...LOCK IN SHARE MODE、SELECT...FOR UPDATE命令以及INSERT、UPDATE和DELETE命令。
出于效率方面的考慮,InnoDB數(shù)據(jù)表的數(shù)據(jù)行級(jí)鎖定實(shí)際發(fā)生在它們的索引上,而不是數(shù)據(jù)表自身上。顯然,數(shù)據(jù)行級(jí)鎖定機(jī)制只有在有關(guān)的數(shù)據(jù)表有一個(gè)合適的索引可供鎖定的時(shí)候才能發(fā)揮效力。
2. 限制
如果WEHERE子句的查詢條件里有不等號(hào)(WHERE coloum != ...),MySQL將無(wú)法使用索引。
類似地,如果WHERE子句的查詢條件里使用了函數(shù)(WHERE DAY(column) = ...),MySQL也將無(wú)法使用索引。
在JOIN操作中(需要從多個(gè)數(shù)據(jù)表提取數(shù)據(jù)時(shí)),MySQL只有在主鍵和外鍵的數(shù)據(jù)類型相同時(shí)才能使用索引。
如果WHERE子句的查詢條件里使用比較操作符LIKE和REGEXP,MySQL 只有在搜索模板的第一個(gè)字符不是通配符的情況下才能使用索引。比如說(shuō),如果查詢條件是LIKE 'abc%',MySQL將使用索引;如果查詢條件是LIKE '%abc',MySQL將不使用索引。
在ORDER BY操作中,MySQL只有在排序條件不是一個(gè)查詢條件表達(dá)式的情況下才使用索引。(雖然如此,在涉及多個(gè)數(shù)據(jù)表查詢里,即使有索引可用,那些索引在加快ORDER BY方面也沒什么作用)
如果某個(gè)數(shù)據(jù)列里包含許多重復(fù)的值,就算為它建立了索引也不會(huì)有很好的效果。比如說(shuō),如果某個(gè)數(shù)據(jù)列里包含的凈是些諸如"0/1"或"Y/N"等值,就沒有必要為它創(chuàng)建一個(gè)索引。
普通索引、唯一索引和主索引
1. 普通索引
普通索引(由關(guān)鍵字KEY或INDEX定義的索引)的唯一任務(wù)是加快對(duì)數(shù)據(jù)的訪問(wèn)速度。因此,應(yīng)該只為那些最經(jīng)常出現(xiàn)在查詢條件(WHERE column = ...)或排序條件(ORDER BY column)中的數(shù)據(jù)列創(chuàng)建索引。只要有可能,就應(yīng)該選擇一個(gè)數(shù)據(jù)最整齊、最緊湊的數(shù)據(jù)列(如一個(gè)整數(shù)類型的數(shù)據(jù)列)來(lái)創(chuàng)建索引。
2. 唯一索引
普通索引允許被索引的數(shù)據(jù)列包含重復(fù)的值。比如說(shuō),因?yàn)槿擞锌赡芡酝粋€(gè)姓名在同一個(gè)"員工個(gè)人資料"數(shù)據(jù)表里可能出現(xiàn)兩次或更多次。
如果能確定某個(gè)數(shù)據(jù)列將只包含彼此各不相同的值,在為這個(gè)數(shù)據(jù)列創(chuàng)建索引的時(shí)候就應(yīng)該用關(guān)鍵字UNIQUE把它定義為一個(gè)唯一索引。這么做的好處:一是簡(jiǎn)化了MySQL對(duì)這個(gè)索引的管理工作,這個(gè)索引也因此而變得更有效率;二是 MySQL會(huì)在有新記錄插入數(shù)據(jù)表時(shí),自動(dòng)檢查新記錄的這個(gè)字段的值是否已經(jīng)在某個(gè)記錄的這個(gè)字段里出現(xiàn)過(guò)了;如果是,MySQL將拒絕插入那條新記錄。也就是說(shuō),唯一索引可以保證數(shù)據(jù)記錄的唯一性。事實(shí)上,在許多場(chǎng)合,人們創(chuàng)建唯一索引的目的往往不是為了提高訪問(wèn)速度,而只是為了避免數(shù)據(jù)出現(xiàn)重復(fù)。
3. 主索引
在前面已經(jīng)反復(fù)多次強(qiáng)調(diào)過(guò):必須為主鍵字段創(chuàng)建一個(gè)索引,這個(gè)索引就是所謂的"主索引"。主索引與唯一索引的唯一區(qū)別是:前者在定義時(shí)使用的關(guān)鍵字是PRIMARY而不是UNIQUE。
4. 外鍵索引
如果為某個(gè)外鍵字段定義了一個(gè)外鍵約束條件,MySQL就會(huì)定義一個(gè)內(nèi)部索引來(lái)幫助自己以最有效率的方式去管理和使用外鍵約束條件。
5. 復(fù)合索引
索引可以覆蓋多個(gè)數(shù)據(jù)列,如像INDEX(columnA, columnB)索引。這種索引的特點(diǎn)是MySQL可以有選擇地使用一個(gè)這樣的索引。如果查詢操作只需要用到columnA數(shù)據(jù)列上的一個(gè)索引,就可以使用復(fù)合索引INDEX(columnA, columnB)。不過(guò),這種用法僅適用于在復(fù)合索引中排列在前的數(shù)據(jù)列組合。比如說(shuō),INDEX(A, B, C)可以當(dāng)做A或(A, B)的索引來(lái)使用,但不能當(dāng)做B、C或(B, C)的索引來(lái)使用。
6. 索引的長(zhǎng)度
在為CHAR和VARCHAR類型的數(shù)據(jù)列定義索引時(shí),可以把索引的長(zhǎng)度限制為一個(gè)給定的字符個(gè)數(shù)(這個(gè)數(shù)字必須小于這個(gè)字段所允許的最大字符個(gè)數(shù))。這么做的好處是可以生成一個(gè)尺寸比較小、檢索速度卻比較快的索引文件。在絕大多數(shù)應(yīng)用里,數(shù)據(jù)庫(kù)中的字符串?dāng)?shù)據(jù)大都以各種各樣的名字為主,把索引的長(zhǎng)度設(shè)置為10~15個(gè)字符已經(jīng)足以把搜索范圍縮小到很少的幾條數(shù)據(jù)記錄了。
在為BLOB和TEXT類型的數(shù)據(jù)列創(chuàng)建索引時(shí),必須對(duì)索引的長(zhǎng)度做出限制;MySQL所允許的最大索引jlkjljkjlj全文索引
文本字段上的普通索引只能加快對(duì)出現(xiàn)在字段內(nèi)容最前面的字符串(也就是字段內(nèi)容開頭的字符)進(jìn)行檢索操作。如果字段里存放的是由幾個(gè)、甚至是多個(gè)單詞構(gòu)成的較大段文字,普通索引就沒什么作用了。這種檢索往往以LIKE %word%的形式出現(xiàn),這對(duì)MySQL來(lái)說(shuō)很復(fù)雜,如果需要處理的數(shù)據(jù)量很大,響應(yīng)時(shí)間就會(huì)很長(zhǎng)。
這類場(chǎng)合正是全文索引(full-text index)可以大顯身手的地方。在生成這種類型的索引時(shí),MySQL將把在文本中出現(xiàn)的所有單詞創(chuàng)建為一份清單,查詢操作將根據(jù)這份清單去檢索有關(guān)的數(shù)據(jù)記錄。全文索引即可以隨數(shù)據(jù)表一同創(chuàng)建,也可以等日后有必要時(shí)再使用下面這條命令添加:
ALTER TABLE tablename ADD FULLTEXT(column1, column2)
有了全文索引,就可以用SELECT查詢命令去檢索那些包含著一個(gè)或多個(gè)給定單詞的數(shù)據(jù)記錄了。下面是這類查詢命令的基本語(yǔ)法:
SELECT * FROM tablename
WHERE MATCH(column1, column2) AGAINST('word1', 'word2', 'word3')
上面這條命令將把column1和column2字段里有word1、word2和word3的數(shù)據(jù)記錄全部查詢出來(lái)。
注解:InnoDB數(shù)據(jù)表不支持全文索引。
查詢和索引的優(yōu)化
只有當(dāng)數(shù)據(jù)庫(kù)里已經(jīng)有了足夠多的測(cè)試數(shù)據(jù)時(shí),它的性能測(cè)試結(jié)果才有實(shí)際參考價(jià)值。如果在測(cè)試數(shù)據(jù)庫(kù)里只有幾百條數(shù)據(jù)記錄,它們往往在執(zhí)行完第一條查詢命令之后就被全部加載到內(nèi)存里,這將使后續(xù)的查詢命令都執(zhí)行得非常快--不管有沒有使用索引。只有當(dāng)數(shù)據(jù)庫(kù)里的記錄超過(guò)了1000條、數(shù)據(jù)總量也超過(guò)了MySQL服務(wù)器上的內(nèi)存總量時(shí),數(shù)據(jù)庫(kù)的性能測(cè)試結(jié)果才有意義。
在不確定應(yīng)該在哪些數(shù)據(jù)列上創(chuàng)建索引的時(shí)候,人們從EXPLAIN SELECT命令那里往往可以獲得一些幫助。這其實(shí)只是簡(jiǎn)單地給一條普通的SELECT命令加一個(gè)EXPLAIN關(guān)鍵字作為前綴而已。有了這個(gè)關(guān)鍵字,MySQL將不是去執(zhí)行那條SELECT命令,而是去對(duì)它進(jìn)行分析。MySQL將以表格的形式把查詢的執(zhí)行過(guò)程和用到的索引(如果有的話)等信息列出來(lái)。
在EXPLAIN命令的輸出結(jié)果里,第1列是從數(shù)據(jù)庫(kù)讀取的數(shù)據(jù)表的名字,它們按被讀取的先后順序排列。type列指定了本數(shù)據(jù)表與其它數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系(JOIN)。在各種類型的關(guān)聯(lián)關(guān)系當(dāng)中,效率最高的是system,然后依次是const、eq_ref、ref、range、index和All(All的意思是:對(duì)應(yīng)于上一級(jí)數(shù)據(jù)表里的每一條記錄,這個(gè)數(shù)據(jù)表里的所有記錄都必須被讀取一遍--這種情況往往可以用一索引來(lái)避免)。
possible_keys數(shù)據(jù)列給出了MySQL在搜索數(shù)據(jù)記錄時(shí)可選用的各個(gè)索引。key數(shù)據(jù)列是MySQL實(shí)際選用的索引,這個(gè)索引按字節(jié)計(jì)算的長(zhǎng)度在key_len數(shù)據(jù)列里給出。比如說(shuō),對(duì)于一個(gè)INTEGER數(shù)據(jù)列的索引,這個(gè)字節(jié)長(zhǎng)度將是4。如果用到了復(fù)合索引,在key_len數(shù)據(jù)列里還可以看到MySQL具體使用了它的哪些部分。作為一般規(guī)律,key_len數(shù)據(jù)列里的值越小越好(意思是更快)。
ref數(shù)據(jù)列給出了關(guān)聯(lián)關(guān)系中另一個(gè)數(shù)據(jù)表里的數(shù)據(jù)列的名字。row數(shù)據(jù)列是MySQL在執(zhí)行這個(gè)查詢時(shí)預(yù)計(jì)會(huì)從這個(gè)數(shù)據(jù)表里讀出的數(shù)據(jù)行的個(gè)數(shù)。row數(shù)據(jù)列里的所有數(shù)字的乘積可以讓我們大致了解這個(gè)查詢需要處理多少組合。
最后,extra數(shù)據(jù)列提供了與JOIN操作有關(guān)的更多信息,比如說(shuō),如果MySQL在執(zhí)行這個(gè)查詢時(shí)必須創(chuàng)建一個(gè)臨時(shí)數(shù)據(jù)表,就會(huì)在extra列看到using temporary字樣
安裝MySQL時(shí)候的注意事項(xiàng)
1、如果您是用MySQL+Apache,使用的又是FreeBSD網(wǎng)路操作系統(tǒng)的話,安裝時(shí)候你應(yīng)按注意到FreeBSD的版本問(wèn)題,在FreeBSD的3.0以下版本來(lái)說(shuō),MySQL Source內(nèi)含的MIT-pthread運(yùn)行是正常的,但在這版本以上,你必須使用native threads,也就是加入一個(gè)with-named-thread-libs=-lc_r的選項(xiàng)。
2、如果您在COMPILE過(guò)程中出了問(wèn)題,請(qǐng)先檢查你的gcc版本是否在2.81版本以上,gmake版本是否在3.75以上。
3、如果不是版本的問(wèn)題,那可能是你的內(nèi)存不足,請(qǐng)使用./configure -- with-low-memory來(lái)加入。
4、如果您要重新做你的configure,那么你可以鍵入rm config.cache和make clean來(lái)清除記錄。
5、我們一般把MySQL安裝在/usr/local目錄下,這是缺省值,您也可以按照你的需要設(shè)定你所安裝的目錄。
posted on 2009-04-06 00:46
李陽(yáng) 閱讀(580)
評(píng)論(0) 編輯 收藏 引用