一个sql的优化问题
两个sql,斜体加粗部分有些许差别,不知道是什么原因影响了子查询走索引?
一:
explain
SELECT
h.phone_num,
h.state
FROM
hunan_unicom_phone_state_201810 h
WHERE
h.create_time > ‘2018-10-18’
AND h.create_time < ‘2018-10-19’
and h.phone_num IN (
SELECT
user_id AS phone_num
FROM
unicom_business_order
WHERE
1 = 1
AND update_type = ‘1’
AND left(create_time,7) <= '2018-10’
GROUP BY
user_id
ORDER BY
user_id,
create_time DESC
)
GROUP BY
h.phone_num

二:
EXPLAIN
SELECT
h.phone_num,
h.state
FROM
hunan_unicom_phone_state_201810 h
WHERE
h.create_time > ‘2018-10-18’
AND h.create_time < ‘2018-10-19’
AND h.phone_num IN (
SELECT
user_id AS phone_num
FROM
unicom_business_order
WHERE
1 = 1
AND update_type = ‘1’
AND create_time <= '2018-11’
GROUP BY
user_id
ORDER BY
user_id,
create_time DESC
)
GROUP BY
h.phone_num

请问
为什么第二个sql子查询不走索引?
left(create_time,7) <= '2018-10’和 AND create_time <= '2018-11’有什么区别?
两种写法是否都正确?
本文通过对比两个SQL查询,探讨了在日期条件筛选中`left(create_time, 7) <= '2018-10'`与`create_time <= '2018-11'`的差异如何影响子查询的索引使用。第一个SQL的子查询能利用索引,而第二个则不能,引发关于这两种写法正确性和效率的讨论。"
106044129,9133943,平原作战:炮弹射角计算,"['物理学', '算法', '数学应用', '编程挑战']

1367

被折叠的 条评论
为什么被折叠?



