簡體   English   中英

Mysql查詢執行計划有緩存嗎?

[英]Mysql query execution plan has caching?

我到處尋找我的問題,但沒有找到確切的答案。 數據庫:MySQL給出三個數字字段a,b,c和一個日期時間字段d,所有索引單獨索引表包含10密耳。 記錄。

兩個數字n,m

我有一個基本的查詢:

select * where (a=n or b=n) and c IN(m) Order by d DESC

(n可以是任意數字,m可以是1-9之間的任何數字)我也有一個單獨的索引。 我已嘗試過ac和bc的索引,但沒有成功。

在我的開發環境中,我總是得到一個索引合並,這使得查詢速度很快,即使它出於某種原因而不是我真正關心的文件。

但是在生產(不同的服務器 - 相同的模式/數據)上,無論我做什么都不會發生。

我對這個奇怪問題的解決方法是將查詢轉換為以下語句:

從:

select * where (a=n or b=n) and c IN(m) ORDER BY d desc

至:

select * where (a=n or b=n) and c IN(m,'m') ORDER BY d desc

這導致了對生產環境的合並索引查詢,這對我來說意味着在某處有一個執行計划緩存,我無法弄清楚我的生活在哪里清除緩存(如果確實有一個)

我需要知道如何告訴生產環境在第一個語句中正確使用該索引。

作為注釋......出於某種原因,Explain查詢告訴我d是解釋查詢時用於生產的索引。

我需要知道如何告訴生產環境在第一個語句中正確使用該索引。

使用“強制索引”語法。

如果您在開發和生產中粘貼表格和查詢(相應)的CREATE TABLE&EXPLAIN輸出,我們可以將其縮小到幾個方面。 可能還有助於了解每台機器上的RAM。

PS:

在我的開發環境中,我總是得到一個索引合並,這使得查詢速度很快,即使它出於某種原因而不是我真正關心的文件。

按d排序,不在索引中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM