程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 糟糕的sql語句

糟糕的sql語句

編輯:MySQL綜合教程

糟糕的sql語句      同事傳過來一個sql,說此sql運行期間大量占用服務器磁盤空間,大約將近10個G的空間,效率超慢      SELECT MIN(order_id), MAX(order_id) FROM (select *,date(order_creation_date) create_date from orders where  (1 = 1) ) AS t1     1  又是一個糟糕的sql,select  *  from  table_name 這種格式的sql是絕對不允許的     2  剛開始,沒看明白這個sql是要干嘛的,為什麼要從這個表裡查詢數據呢?select *,date(order_creation_date) create_date from orders where  (1 = 1),作為嵌套表。   3 在查詢過程中,為什麼會占用磁盤空間       中間產生了臨時表,內存中放不下這麼多數據,把數據拷貝到磁盤中,一般在 /tmp 下面   產生類似 #sql_***.MYD,#sql_***.MYI 這樣的文件,其實就是一個myisam表。   這樣拷貝的過程浪費時間,影響性能。       咨詢同事,只是想查詢出order_id的最大值,最小值。  看了一下orders表結構,orders的order_id是自增主鍵,那就簡單了, 直接改寫如下    select max(order_id),min(order_id)  from orders  order_id 是自增主鍵,上面已經建了索引,而且是有序的,因此對於max min這種復合函數求最大最少值非常的快。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved