考虑以下查询:
SELECT
`banner`.`id`,
`region`.*
FROM
`nms_section_region_banner` AS `section`
JOIN `aw_rbslider_slide_region` AS `region`
ON
FIND_IN_SET(
region.region_id,
section.region_id
) <> 0
JOIN `aw_rbslider_banner` AS `banner`
ON
`section`.`banner_id` = `banner`.`id`
JOIN `aw_rbslider_slide_banner` AS `slide_banner`
ON
`slide_banner`.`banner_id` = `banner`.`id`
JOIN `aw_rbslider_slide` AS `slide`
ON
`slide_banner`.`slide_id` = `slide`.`id` AND `slide`.`status` = 1
JOIN `aw_rbslider_slide_store` AS `store`
ON
`slide`.`id` = `store`.`slide_id`
WHERE
`section`.`section_id` = '414' AND(
`region`.`region_type` = '1' OR FIND_IN_SET('400020', region.region_code) <> 0 OR
FIND_IN_SET(
'PANINDIABEAUTY',
region.region_code
) <> 0 OR FIND_IN_SET(
'PANINDIADIGITAL',
region.region_code
) <> 0 OR FIND_IN_SET('6210', region.region_code) <> 0 OR FIND_IN_SET(
'PANINDIAJEWEL',
region.region_code
) <> 0 OR FIND_IN_SET('MH', region.region_code) <> 0 OR FIND_IN_SET('Mumbai',
region.region_code) <> 0
) AND(
`slide`.`display_from` <= '2021-07-23 02:05:16' OR `slide`.`display_from` IS NULL OR
`slide`.`display_from` = '0000-00-00 00:00:00'
) AND(
`slide`.`display_to` >= '2021-07-23 02:05:16' OR `slide`.`display_to` IS NULL OR
`slide`.`display_to` = '0000-00-00 00:00:00'
) AND(
`store`.`store_id` = '0' OR `store`.`store_id` = '2'
)
GROUP BY
`banner`.`id`
ORDER BY
FIELD(
region.region_type,
3,
2,
5,
4,
1
)
需要避免全表扫描。
我的查询是这样的,
图 1 和图 2 描述了表格的类型、键和可能的键信息
有人可以指导我避免对这 6 个表进行全表扫描。