簡體   English   中英

使用非索引和復合索引

[英]using non index with composite index

我有問題是否有3列(名字,姓氏,地址)的表作為字符串/ varchar(255)

我有2列的復合my_idx

CREATE INDEX my_idx ON my_table (firstname,lastname)

如果我使用sql,它將使用我定義的索引嗎?

select * from my_table where address="zzz" and firstname="xxxx" and lastname="yyyy"

還是應該使用索引列作為最左邊的條件

select * from my_table where  firstname="xxxx" and lastname="yyyy" and address="zzz" 

謝謝

首先:如果在查詢中添加關鍵字“ EXPLAIN”,它將打印出所有可能使用的索引以及MySQL選擇的索引。 據我了解,是的,它將使用索引。 查詢中字段的順序無關。

重要的是索引中的順序,但前提是您沒有在查詢中提供所有字段(或對值應用函數或對其余字符串使用例如like運算符)。 例如,如果僅查詢lastname ,則不能使用索引。 如果僅查詢firstname ,則將使用索引。 如果您查詢firstnameaddress ,將使用索引,依此類推...

暫無
暫無

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

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