小编Mik*_*lam的帖子

EJB还活着吗?

您是否仍在项目中使用会话或实体EJB?为什么?

java ejb java-ee

9
推荐指数
2
解决办法
2209
查看次数

慢速MySQL(InnoDB)查询尽管加入了索引键,为什么?

你知道为什么这个请求可能很慢(在一个快速的MySQL服务器上1.7秒):

SELECT DISTINCT TABLE_A.keyA 
FROM TABLE_A,TABLE_B 
WHERE TABLE_A.keyB= TABLE_B.keyB 
AND TABLE_A.fieldC in (0,2,5,7,8) LIMIT 20;
Run Code Online (Sandbox Code Playgroud)

由此执行计划给出EXPLAIN:

id    select_type table       type    possible_keys         key                   key_len   ref     rows     Extra 
1     SIMPLE      TABLE_B     index   PRIMARY               PRIMARY               8     NULL      10     Using index; Using temporary
1     SIMPLE      TABLE_A     ref     IDX_TABLE_A_KEY_B     IDX_TABLE_A_KEY_B     8     TABLE_B.keyB     25455     Using where
Run Code Online (Sandbox Code Playgroud)

其他要素:

  • 表TABLE_A有300 000行
  • TABLE_A.keyA是TABLE_A的主键
  • TABLE_A.keyB是朝向TABLE_B的主键keyB的外键; 表TABLE_B有10行;
  • 99%的TABLE_A具有fieldC = 1并且该表的1%在(0,2,5,7,8)中具有fieldC(这就是为什么该字段没有被索引; EDIT该子句没有问题,因为具有相同的SELECT子句但没有与TABLE_B的连接很快);
  • 在我看来,JOIN是有罪的,因为表上的一个简单的SELECT很快;
  • 与另一个表连接TABLE_C也很慢;
  • MySQL版本:5.1.23a-maria-alpha

你有什么主意吗?

mysql sql mariadb

1
推荐指数
1
解决办法
798
查看次数

标签 统计

ejb ×1

java ×1

java-ee ×1

mariadb ×1

mysql ×1

sql ×1