2016-05-11 64 views
0

我已經對MySQL服務器進行了以下查詢。相同的服務器,相同的查詢,爲什麼我得到不同的查詢執行時間?

select ORDER_ID,CUSTOMER_ID,PRICE,AMOUNT,ITEM_ID,ORDER_TIME 
from MY_ORDER order by ORDER_ID desc limit 10000; 

ORDER_ID是該表的主鍵。

正常情況下,它的執行該查詢(不包括獲取時間)的差不多約20毫秒。但有時候,它花費了超過60毫秒。

我的問題是: 在相同的查詢,相同的服務器,相同的模式下,什麼可能是這種執行速度緩慢的原因?

回答

-1

,你必須做出ORDER_ID,CUSTOMER_ID指標,ITEM_ID

+0

我不明白這與被問到的有什麼關係。 –

0

爲什麼不同的執行時間?有很多可能原因...

表是InnoDB?還是MyISAM? (我的答案可能需要更改。)

該查詢可能會擊中100個數據塊。假設你正在使用InnoDB,innodb_buffer_pool_size有多大?如果它不大於100個塊(1-2MB),則可能會出現其他一些進程,並將緩衝塊從緩存中取出,因此需要從磁盤重新加載。這樣的I/O比從緩存中讀取要慢得多。

該表上的另一個操作可能插入了一行嗎?儘管InnoDB非常擅長允許多個線程(連接)與同一個表進行交談,但它有時會付出代價。

相關問題