每日17點準時技術乾貨分享
mysql儲存引擎
myisam: 擁有較高的插入,查詢速度,但不支援事務
innodb :5.5版本後mysql的預設資料庫,事務型資料庫的首選引擎,支援acid事務,支援行級鎖定
mysql索引資料結構(btree和hash)
btree和hash的區別
1、hash 索引,其檢索效率非常高,索引的檢索可以一次定位。btree 索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多次的io訪問
2、hash 索引僅僅能滿足"=","in"和"<=>"查詢,不能使用範圍查詢。
3、hash 索引無法被用來避免資料的排序操作
4、hash 索引不能利用部分索引鍵查詢。
5、hash 索引在任何時候都不能避免表掃瞄。
6、hash 索引遇到大量hash值相等的情況後效能並不一定就會比b-tree索引高。
mysql索引型別
1.主鍵索引
2.普通索引
create index index_name on table(column);
alter table table_name add index index_name (column);
3.唯一索引
create unique index indexname on table(column);
alter table table_name add unique indexname (column);
4.組合索引
alter table `table` add index name_account_email (name,account,email);
5.全文索引
alter table article add fulltext index_content(content);
create fulltext index index_content on article(content);
6.mysql8新特性降序索引
索引的缺點
1.雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行insert、update和delete。因為更新表時,不僅要儲存資料,還要儲存一下索引檔案。
2.建立索引會占用磁碟空間的索引檔案。一般情況這個問題不太嚴重,但如果你在乙個大表上建立了多種組合索引,索引檔案的會增長很快。
索引只是提高效率的乙個因素,如果有大資料量的表,就需要花時間研究建立最優秀的索引,或優化查詢語句。
*索引使用注意事項
1.索引不會包含有null值的列
只要列中包含有null值都將不會被包含在索引中,復合索引中只要有一列含有null值,那麼這一列對於此復合索引就是無效的。所以我們在資料庫設計時不要讓字段的預設值為null。
2.使用短索引
對串列進行索引,如果可能應該指定乙個字首長度。例如,如果有乙個char(255)的列,如果在前10個或20個字元內,多數值是惟一的,那麼就不要對整個列進行索引。短索引不僅可以提高查詢速度而且可以節省磁碟空間和i/o操作。
3.索引列排序
查詢只使用乙個索引,因此如果where子句中已經使用了索引的話,那麼order by中的列是不會使用索引的。因此資料庫預設排序可以符合要求的情況下不要使用排序操作;盡量不要包含多個列的排序,如果需要最好給這些列建立復合索引。
4.like語句操作
一般情況下不推薦使用like操作,如果非使用不可,如何使用也是乙個問題。like 「%aaa%」 不會使用索引而like 「aaa%」可以使用索引。
5.不要在列上進行運算,避免在條件查詢的列上使用函式
這將導致索引失效而進行全表掃瞄*
怎麼看查詢語句是否走索引?
explain sql語句
如果key列有值的話,就說明該錶走了索引,rows是掃瞄的資料數量.
mysql多列索引 MySQL的多列索引
什麼是索引?索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄...
sql 報 無效的列索引 可能的原因
今天遇到了sql報無效的列索引錯誤,在網上找了找問題,基本都在說是sql拼寫錯誤,基本可以確定這個錯誤一般都是由低階失誤導致的,請注意檢查自己的sql拼寫 按照網上指出的問題去找,沒有和自己錯誤一樣的,最後在移除乙個注釋後正常了,我用的是idea,用ctrl 加的注釋 也就是sql前加 不知為何沒有...
mysql 索引型別 ref MySQL索引型別
面試時曾經被問了mysql的索引型別,我這個寶批龍給達到資料儲存方式上了,聚集索引 二級索引 覆蓋索引,也慢慢對面試有了感覺,面試可能會給你乙個情景,然後深入問裡面的知識點 mysql有多種索引型別,索引是在儲存引擎中實現的,不同的儲存引擎對同乙個索引型別的實現方式不同,不同的儲存引擎支援不同的索引...