建立一張tb_student表用於之後測試,主鍵是id,加上name,score欄位
create table `tb_student` (
`id` int(11) not null auto_increment,
`name` varchar(50) not null,
`score` int(11) not null,
primary key (`id`)
)
以下是測試sql,感覺把sql放在一起看比較容易理解
select type解釋測試sql
******
簡單的select
select * from tb_student
primary
需要union或者子查詢
select (select name from tb_student where id =1) from tb_student
union
union操作
select * from tb_student union select * from tb_student
dependent union
查詢與外部相關(mysql優化器會將in優化成exists)
select * from tb_student where id in(select id from tb_student union select id from tb_student)
select * from tb_student a where exists (select 1 from tb_student where id = a.id union select id from tb_student where id = a.id)
union result
union結果集
select * from tb_student union select * from tb_student
subquery
除了from包含的子查詢
select (select name from tb_student where id =1) from tb_student
depend subquery
類似depend union
select (select name from test.tb_student a where a.id=b.id) from test.tb_student b
derived
派生表select * from (select * from tb_student) t
mysql執行計畫 MySQL 執行計畫
1.執行計畫的定義 什麼是執行計畫 查詢計畫 呢?執行計畫就是一系列的操作步驟。sql是宣告性語言,它只告訴資料庫要查詢什麼,但並不告訴資料庫如何去查。資料庫所要做的就是基於演算法和統計資訊計算出一條最佳的訪問路徑。這個工作是由優化器來完成的。優化器會比較不同的執行計畫,然後選擇其中最優的一套。2....
mysql 生成執行計畫 MySQL執行計畫
和很多其他關係型資料庫不通,mysql並不會在生成查詢位元組碼來執行查詢。mysql生成查詢的一棵指令樹,然後通過儲存引擎執行完成這棵指令樹並返回結果。最終的執行計畫包含了重構查詢的全部資訊。如果某個查詢執行explain extended 之後,在執行show warnings,就可以看到重構出的...
mysql 查詢執行計畫 MySql執行計畫的檢視
一。什麼是資料庫執行計畫 利用乙個sql語句,你可能要server取出所有news表中的資訊.當server收到的這條sql的時候,第一件事情並不是解析它.如果這條sql沒有語法錯誤,server才會繼續工作.server會決定最好的計算方式.server會選擇,是讀整個news表好呢,還是利用索引...