我一直在閱讀有關每當MySQL生成一個臨時表時將轉換爲CHAR字段的VARCHAR字段的信息。當MySQL創建臨時表時,包含哪些數據?
如果我有以下表...
- 的100K行
- 十幾VARCHAR列設置爲實際長度(例如,10爲電話號碼)
- 5個VARCHAR列設置爲過剩15K(帶長度,可以短至20,但高達15K最壞情況)
而且,讓我們說我有這個疑問...
- 返回多列,包括VARCHAR處理
- JOIN'd有半打其他表(VARCHAR列上不)
- 對行排序按日期和數字ID(即不上 VARCHAR列)
- 有不不包括VARCHAR領域
- 有12行
當MySQL創建一個臨時表時,爲了排序和偶爾分組(在某些情況下),臨時表中的結果是什麼?
例如,該表只包含選擇要返回哪些行(即那些在WHERE和ORDER BY子句中指定的行)所需的列,然後是數據庫引擎確定LIMIT中的12行,然後閱讀只有這12行的數據?或者,包含在臨時表中的數據塊是否更大(例如,包括冗長VARCHAR列的所有潛在行)?
你生成這個聲明的臨時表? CREATE TEMPORARY TABLE temp_table(count int);' – Matteo
@Matteo:不,我沒有明確地創建臨時表。據我瞭解(或誤解)它,每當我的查詢排序或組時,隱式創建一個臨時表。 –