沈劍的
《架構師
之路系列
》\color
58沈劍的《
架構師之
路系列》
第一類:「列型別」與「where值型別」不符,不能命中索引,會導致值全表掃瞄。
create table table1(
cell varchar(3) primary key
) engine=innodb default charset=utf8;
插入測試資料
insert into table(cell) values('1'),('2'),('3');
測試語句
explain select * from table1 where cell=1;
explain select * from table1 where cell='1;'
答:
(1)第一條測試語句,where後的值的型別是整數型,與table1中的cell型別不一致;
(2)第二條測試語句,where後的值的型別是字串,與tabble1中的cell型別一致;
結論:
(1)強制型別轉換,不能命中索引,需要全表掃瞄,即3條記錄;
(2)型別相同,命中索引,1條記錄;
2.相join的兩個表的字元編碼不同,不能命中索引,會導致笛卡爾積的迴圈計算。
create table table2(
cell varchar(3) primary key
) engine=innodb default charset=latin1
插入測試資料
insert into table2(cell) values('1'),('2'),('3')('4')('5');
測試語句
explain select * from table1,table2 where table1.cell = table2.cell
結論:
相join時,連表table1與table2的字符集不同,關聯屬性是cell,而字符集不同,儲存空間就不同,所以table1會遍歷出3條記錄,tabel1的每一條記錄又要遍歷table2的所有記錄5條,實際進行了笛卡爾積迴圈計算 ,索引無效。
總結:
表列型別,與where的值型別不同;
join表的字元編碼不同
架構師素養
首先,架構師是技術領導,這意味著架構師除了擁有專門的技能外,還必須擁有領導才能。領導能力即體現在組織中的職位上,也體現在架構師展示的品質上。在組織的職位上,架構師是專案中的技術領導,應該擁有技術決策的權威。另一方面,專案經理更關注於管理在資源 進度和成本方面的專案計畫。架構師也應該參與到決定如何組建...
WEB架構師成長系列索引
本人致力於學習物件導向 設計模式 重構 極限程式設計 大型 架構設計 管理等知識,希望有不正確之處多多指出,共同學習提高,為了方便查閱,特做出索引一頁。序言web架構師成長之路之一 走正確的路 web架構師成長之路之二 大牛的法寶 web架構師成長之路之三 架構師都要懂哪些知識 第一篇 設計模式 什...
WEB架構師成長系列索引
原文 序言 web架構師成長之路之一 走正確的路 web架構師成長之路之二 大牛的法寶 web架構師成長之路之三 架構師都要懂哪些知識 第一篇 設計模式 什麼是物件,為什麼要物件導向,怎麼才能物件導向?物件導向基礎 設計模式培訓之一 為什麼要用單例模式?設計模式培訓之二 簡單工廠 工廠方法 設計模式...