簡體   English   中英

MySQL select語句沒有使用索引

[英]MySQL select statement is not using the index

我有一個名為T的表。它有4個屬性:x,y,z和w。

我在表中加載了數據。 然后,在x上創建索引,在y上創建另一個索引。

現在,當我提交此查詢時:

select count(*) from T where x <= 10 and y <=100;

我假設將使用索引x和索引y。

但是,這不會發生!

當我在select語句之前使用命令EXPLAIN時,它將索引x和y顯示為“ possible_keys ”,而在“ key ”列下則為NULL。 這意味着沒有使用索引。

現在,如果我提交此查詢:

select count(*) from T where x<=50;

然后MySQL使用索引x,如EXPLAIN命令所示。

那么,條件中的AND是否會阻止使用索引或者我在這里做錯了什么?

問候!

您需要將x和y索引在一起,更多信息請訪問: http//dev.mysql.com/doc/refman/5.5/en/multiple-column-indexes.html

您只需運行此查詢:

ALTER TABLE `your_table_name_here` 
ADD INDEX `IDX_COMB_XY` (`x` ASC, `y` ASC) ;

現在運行Explain,您將看到將使用IDX_COMB_XY。

MySQL在查詢中每個表只能使用1個索引。 當有多個索引可供選擇時,MySQL將根據基數,內存要求,記錄數等,采取有根據的猜測,哪一個最有益。

@ Mojtaba的答案解釋了如何創建MySQL將在您的場景中使用的多列索引。

暫無
暫無

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

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