十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問題一站解決
下面一起來了解下MySQL中的索引,事務(wù)與視圖,相信大家看完肯定會(huì)受益匪淺,文字在精不在多,希望Mysql中的索引,事務(wù)與視圖這篇短內(nèi)容是你想要的。
創(chuàng)新互聯(lián)長(zhǎng)期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為恒山企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、做網(wǎng)站,恒山網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
索引是一種特殊的文件,包含著對(duì)數(shù)據(jù)表中所有記錄的引用指針。更通俗地說,數(shù)據(jù)庫(kù)索引好比一本書前面的目錄,能加快數(shù)據(jù)庫(kù)的查詢速度。例如需要遍歷2000條數(shù)據(jù),在沒有索引的情況下,數(shù)據(jù)庫(kù)會(huì)遍歷全部2000條數(shù)據(jù)后選擇符合條件的;而有了相應(yīng)的索引之后,數(shù)據(jù)庫(kù)會(huì)直接在索引中查找符合條件的選項(xiàng)。數(shù)據(jù)庫(kù)索引就是為了提高表的搜索效率而對(duì)某些字段中的值建立的目錄。
(1)快速定位,大大加快數(shù)據(jù)的查詢速度;
(2)降低數(shù)據(jù)庫(kù)的IO(輸入/輸出)成本,降低數(shù)據(jù)庫(kù)的排序成本;
(3)通過創(chuàng)建唯一性索引,可以保證數(shù)據(jù)表中的每一行數(shù)據(jù)的唯一性;
(4)加快表和表之間的聯(lián)系;
(1)普通索引,最基本的索引類型,沒有唯一性之類的限制
(2)唯一索引,索引列的所有值只能出現(xiàn)一次,即必須唯一,可以有一個(gè)為空值
(3)主鍵索引,主鍵是一種唯一索引,但它必須指定為“PRIMARY KEY”,不可以為空值,在數(shù)據(jù)庫(kù)中為表定義主鍵將自動(dòng)創(chuàng)建主鍵索引,主鍵索引是唯一索引的特殊類型。該索引要求主鍵中的每一個(gè)值都唯一
(4)全文索引,索引類型為FULLTEXT,全文索引可以在CHAR,VARCHAR或者TEXT類型的列上創(chuàng)建
(5)多列索引。多列索引可以區(qū)分其中一列可能有相同值的行。例如:如果經(jīng)常在同一查詢中為姓和名兩列設(shè)置查詢條件,那么在這兩列上創(chuàng)建索引將很有意義
數(shù)據(jù)條目大于2000條 否則和不使用索引沒有多大區(qū)別
id name score hobby
1 張三 90 游泳
2 李四 79 看書
2 王五 68 畫畫
查看索引:show index from info \G; 在命令后面加上“\G”,可以豎向顯示索引的信息
命令格式:
create index 索引名 on 表名 (列名);
命令格式:create unique index 索引名 on 表(列名);
舉例:create unique index unique_id_index on info(id);
![]()
創(chuàng)建主鍵索引有兩種方式,一種是在創(chuàng)建表的同時(shí)創(chuàng)建主鍵,主鍵索引默認(rèn)創(chuàng)建
另一種是已經(jīng)創(chuàng)建了表,沒有指定主鍵,然后修改表加入主鍵,主鍵索引會(huì)自動(dòng)創(chuàng)建,
命令格式:alter table 表名 add primary key(列名);
命令格式:drop index 索引名 on 表名;
舉例:
drop index name_index on info;
drop index unique_id_index on info;
![]()
命令格式:alter table 表名 drop primary key;
舉例:alter table info drop primary key;
增加一列,舉例:alter table info add column age int;
![]()
刪除表中一列;alter table info drop column age;
![]()
修改列的內(nèi)容;alter table infos change hobby hobname char(16);
create index mulit_index on info(name,score);
事務(wù)是一種機(jī)制,一個(gè)操作序列,包含了一組數(shù)據(jù)庫(kù)操作命令,并且把所有的命令作為一個(gè)整體一起向系統(tǒng)提交或撤銷操作請(qǐng)求,即這一組數(shù)據(jù)庫(kù)命令要么執(zhí)行,要么都不執(zhí)行。事務(wù)是一個(gè)不可分割的工作邏輯單元,在數(shù)據(jù)庫(kù)系統(tǒng)上執(zhí)行并發(fā)操作時(shí),事務(wù)是最小的控制單元。事務(wù)適用于用戶同時(shí)操作數(shù)據(jù)庫(kù)系統(tǒng)的場(chǎng)景,如銀行,保險(xiǎn)公司及證券交易系統(tǒng)等。通過事務(wù)的整體性以保證數(shù)據(jù)的一致性。事務(wù)是保證了一組操作的平穩(wěn)性和可預(yù)測(cè)性的技術(shù)。
事務(wù)具體有四個(gè)特性:原子性;一致性;隔離性;持續(xù)性
(1)原子性:事務(wù)是一個(gè)完整的操作,各元素是不可分的,即原子的。事務(wù)中的所有元素必須作為一個(gè)整體提交或回滾。如果事務(wù)中的任何元素失敗,則整個(gè)事務(wù)將失敗
(2)一致性:當(dāng)事務(wù)完成時(shí),數(shù)據(jù)必須處于一致狀態(tài);在事務(wù)開始之前,數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)處于一致狀態(tài);在正在進(jìn)行的事務(wù)中,數(shù)據(jù)可能處于不一致的狀態(tài);當(dāng)事務(wù)成功完成時(shí),數(shù)據(jù)必須再次回到一致的一致狀態(tài)。
(3)隔離性:對(duì)數(shù)據(jù)進(jìn)行修改的所有并發(fā)事務(wù)是彼此隔離的,這表明事務(wù)必須是獨(dú)立的,它不應(yīng)以任何方式依賴于或影響其他事務(wù)。修改數(shù)據(jù)的事務(wù)可以在另一個(gè)使用相同數(shù)據(jù)的事務(wù)開始之前訪問這些數(shù)據(jù),或者在另一個(gè)使用相同數(shù)據(jù)的事務(wù)結(jié)束之后訪問這些數(shù)據(jù)。
(4)持久性:指不管系統(tǒng)是否發(fā)生故障,事務(wù)處理的結(jié)果都是永久的。一旦事務(wù)被提交,事務(wù)的效果會(huì)被永久的保存在數(shù)據(jù)庫(kù)中
begin:表示開始一個(gè)事務(wù),后面會(huì)有多條數(shù)據(jù)庫(kù)操作語(yǔ)句執(zhí)行
commit:表示提交一個(gè)事務(wù),對(duì)應(yīng)前面的begin操作,它們之間的數(shù)據(jù)庫(kù)操作語(yǔ)句一起完成
rollback:表示回滾一個(gè)事務(wù),在begin和commit之間,如果某一個(gè)數(shù)據(jù)庫(kù)操作語(yǔ)句出現(xiàn)錯(cuò)誤,執(zhí)行rollback回滾,數(shù)據(jù)庫(kù)回到begin之前的狀態(tài),也就是操作語(yǔ)句都不執(zhí)行
看完Mysql中的索引,事務(wù)與視圖這篇文章后,很多讀者朋友肯定會(huì)想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。