1 -PRIMARY
用于二级索引,例如 ( PRIMARY
, column1
)上的二级索引
2 - 我知道,一旦将一个部分用于范围扫描,mysql就无法继续使用索引的其余部分,但是:IN (...,...,...)
不被视为范围,是吗?是的,它是一个范围,但我在 mysqlperformanceblog.com 上读过它的IN
行为与BETWEEN
索引的使用不同。
谁能证实这两点?或者告诉我为什么这是不可能的?或者怎么可能?
更新:
链接:
http ://www.mysqlperformanceblog.com/2006/08/10/using-union-to-implement-loose-index-scan-to-mysql/
http://www.mysqlperformanceblog.com/2006/08/ 14/mysql-followup-on-union-for-query-optimization-query-profiling/comment-page-1/#comment-952521
更新 2:嵌套 SELECT 的示例:
SELECT * FROM user_d1 uo
WHERE EXISTS (
SELECT 1 FROM `user_d1` ui
WHERE ui.birthdate BETWEEN '1990-05-04' AND '1991-05-04'
AND ui.id=uo.id
)
ORDER BY uo.timestamp_lastonline DESC
LIMIT 20
因此,外部SELECT
用于timestamp_lastonline
排序,内部PK
用于与外部连接或birthdate
用于过滤。
如果 MySQL 不能在范围扫描和排序中使用索引,那么除了这个查询还有什么其他选项?