簡體   English   中英

受限的SQL查詢返回所有行而不是一行

[英]Limited SQL query returns all rows instead of one

我嘗試了SQL代碼:

explain SELECT * FROM myTable LIMIT 1

結果,我得到了:

id select_type table   type possible_keys key  key_len ref  **rows**
1  SIMPLE      myTable ALL  NULL          NULL NULL    NULL **32117**

您知道為什么查詢將遍歷所有行而不是僅選擇第一行嗎? 我可以在查詢中(或在我的表中)更改什么以減少類似結果的行數?

顯示的行數只是要檢查的行數的估計值 它並不總是等於運行查詢時檢查的實際行數。

特別是:

估計行數時不考慮LIMIT即使您有LIMIT來限制要檢查的行數,MySQL仍會打印全數。

資源

當查詢實際運行時,將僅檢查一行。

編輯為使用subselect:

假設主鍵是“ my_id”,請使用WHERE 例如:

select * from mytable
where my_id = (
select max(my_id) from mytable
)

雖然起初看起來效率較低,但結果如解釋中所示,導致僅返回一行並讀取索引以查找最大值。 我不建議針對MySQL中的分區表執行此操作:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   PRIMARY mytable const   PRIMARY PRIMARY 4   const   1    
2   SUBQUERY    NULL    NULL    NULL    NULL    NULL    NULL    NULL    Select tables optimized away

暫無
暫無

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

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