相关疑难解决方法(0)

MySQL不使用WHERE IN子句的索引?

我正在尝试优化我的Rails应用程序中的一些数据库查询,我有几个让我难过.他们都INWHERE子句中使用an 并且都在进行全表扫描,即使适当的索引似乎已经到位.

例如:

SELECT `user_metrics`.* FROM `user_metrics` WHERE (`user_metrics`.user_id IN (N,N,N,N,N,N,N,N,N,N,N,N))
Run Code Online (Sandbox Code Playgroud)

执行全表扫描并EXPLAIN说:

select_type: simple
type: all
extra: using where
possible_keys: index_user_metrics_on_user_id  (which is an index on the user_id column)
key: (none)
key_length: (none)
ref: (none)
rows: 208
Run Code Online (Sandbox Code Playgroud)

使用IN语句时是否未使用索引或我是否需要以不同方式执行某些操作?这里的查询是由Rails生成的,所以我可以重新审视我的关系是如何定义的,但我想我首先要从数据库级别的潜在修复开始.

mysql sql database optimization ruby-on-rails

49
推荐指数
5
解决办法
4万
查看次数

标签 统计

database ×1

mysql ×1

optimization ×1

ruby-on-rails ×1

sql ×1