我有几个表,我想知道我的复合索引是否有用。我正在使用MySQL 5+
,但我想这将适用于任何数据库(或不适用?)。
无论如何,说我下表:
username active
-----------------------------------
Moe.Howard 1
Larry.Fine 0
Shemp.Howard 1
所以我通常选择像:
select * from users where username = 'shemp.howard' and active = 1;
我们的active=1
许多表格中都使用了。通常,我的索引将在username
列上,但我正在考虑添加活动标志(到同一个索引)。
我的逻辑是,当查询引擎扫描索引时,它会扫描索引,例如:
moe.howard,1
shemp.howard,1
larry.fine,0
并Shemp
在它击中非活动用户(Larry)之前找到它。
现在,我们的active
列通常是TINYINTS
和Unsigned
。但我担心索引可能会落后!
larry.fine,0
moe.howard,1
shemp.howard,1
我应该如何最好地处理这个问题并确保我的索引是正确的?我不应该将活动列添加到与用户名相同的索引吗?或者我应该为活动创建一个单独的索引并使其降序?
谢谢。