最近看了江承堯老師的《mysql技術內幕:sql程式設計》,同時結合自己工作中遇到的一些問題,從工程效能以及mysql本身實際應用出發,總結了一些通過子查詢解決的常見問題
1 行號
mysql資料庫在行號方面的支援並不是十分友好,沒有像其他資料庫一樣提供類似row_number解決方案
demo1:select empid ,(select count(1) from sales as t2 where t2.empid<=t1.empid) as rownum from salas as t2
通過子查詢解決直觀易懂,但是效能很差,每條記錄都需要在相關子查詢上進行一次查詢,生成笛卡爾積。掃瞄成本0(n^2)
select emp_no,dept_no,@a:=@a+1 as row_num form dept_emp,(select @a:=0) t 。掃瞄成本0(n),所以使用交叉連線(cross join)生成行號效率更高
2 分割槽
這裡介紹一種基於臨時表的分割槽解決方案:可以在臨時表中建立乙個自增長的序列,按照分割槽的要求將資料插入臨時表,需要借助巢狀查詢解決問題。
mysql常用知識點 mysql 常用知識點。
mysql u root p show databases show tables select from abc order by id limit 0,10 create database bbb exit mysqldump u root p game home backup.sql mysq...
二級mysql知識點 Mysql 知識點
1.死鎖回滾策略 死鎖發生時mysql會選擇行數少的事務進行回滾 2.鎖型別 共享鎖,排他鎖 行級鎖 innob record lock 鎖定單條記錄 gap lock 鎖定乙個範圍的記錄 但不包括記錄本身 next key lock 鎖定乙個範圍的記錄 並且包 含記錄本身 這是預設的鎖型別 更新操...
mysql 全面知識點 Mysql知識點整理
1 儲存引擎區別 myisam 不支援事物 僅支援表級鎖 支援b 樹索引 memory 不支援事物 僅支援表級鎖 支援b 樹和hash索引 innodb 支援事物 支援行級鎖 支援b 樹索引 2 鎖機制 myisam memory儲存引擎使用的是表級鎖,分別為表共享讀鎖和表獨佔寫鎖,顯示加鎖lock...