1.查詢過程
客戶端發送查詢請求(請求中攜帶select語句),服務端首先做權限認證,安全處理等。如果通過這些檢查, 則從“查詢緩存”中查找是否已有了這次查詢的緩存結果,如果有則直接返回緩存結果(“查詢緩存”功能可以關閉)。
如果“查詢緩存”沒有命中,則將select語句交給“解析器”進行語法解析,解析完後會生成解析樹。解析樹會通過“預處理器”進行預處理,然後生成“新解析樹”。 “新解析樹”交給查詢優化器進行優化,優化完畢後生成“執行計劃”。“執行計劃”交給“查詢執行引擎”進行執行,然後將執行結果返回給客戶端(當然還會做“查詢緩存”處理)。
2.TIMESTAMP 和 DATETIME
timestamp使用4個字節存儲, datatime使用8個字節存儲,因而timestamp只能表示1970-2038年,比datetime表示的範圍小的多,而且timestamp的值因時區的不同而不同。
3. Decimal
Decimal這種數據類型,儘量少用, 因爲可能浮點數計算不準確或者計算代價高,可以轉換一下(比如擴大100倍),用bigint表示。