SELECT 
  SQL_CALC_FOUND_ROWS cscart_cp_blog_posts.post_id 
FROM 
  cscart_cp_blog_posts 
  LEFT JOIN cscart_cp_blog_post_categories ON cscart_cp_blog_post_categories.post_id = cscart_cp_blog_posts.post_id 
  LEFT JOIN cscart_cp_blog_categories ON cscart_cp_blog_categories.category_id = cscart_cp_blog_post_categories.category_id 
  LEFT JOIN cscart_cp_blog_post_descriptions ON cscart_cp_blog_posts.post_id = cscart_cp_blog_post_descriptions.post_id 
  AND cscart_cp_blog_post_descriptions.lang_code = 'ru' 
WHERE 
  1 
  AND cscart_cp_blog_categories.company_id = 1 
  AND (
    cscart_cp_blog_categories.usergroup_ids = '' 
    OR FIND_IN_SET(
      0, cscart_cp_blog_categories.usergroup_ids
    ) 
    OR FIND_IN_SET(
      1, cscart_cp_blog_categories.usergroup_ids
    )
  ) 
  AND (
    cscart_cp_blog_posts.usergroup_ids = '' 
    OR FIND_IN_SET(
      0, cscart_cp_blog_posts.usergroup_ids
    ) 
    OR FIND_IN_SET(
      1, cscart_cp_blog_posts.usergroup_ids
    )
  ) 
  AND cscart_cp_blog_categories.status IN ('A') 
  AND cscart_cp_blog_posts.status IN ('A') 
  AND (
    cscart_cp_blog_posts.use_avail_period = 'N' 
    OR (
      cscart_cp_blog_posts.use_avail_period = 'Y' 
      AND cscart_cp_blog_posts.avail_from_timestamp <= 1787607840 
      AND cscart_cp_blog_posts.avail_till_timestamp >= 1787607840
    )
  ) 
  AND cscart_cp_blog_post_categories.category_id IN (3, 1) 
GROUP BY 
  cscart_cp_blog_posts.post_id 
ORDER BY 
  cscart_cp_blog_posts.timestamp desc, 
  cscart_cp_blog_posts.post_id desc 
LIMIT 
  0, 3

Query time 0.00081

JSON explain

{
  "query_block": {
    "select_id": 1,
    "filesort": {
      "sort_key": "cscart_cp_blog_posts.`timestamp` desc, cscart_cp_blog_posts.post_id desc",
      "temporary_table": {
        "table": {
          "table_name": "cscart_cp_blog_posts",
          "access_type": "ref",
          "possible_keys": ["PRIMARY", "status"],
          "key": "status",
          "key_length": "3",
          "used_key_parts": ["status"],
          "ref": ["const"],
          "rows": 8,
          "filtered": 100,
          "index_condition": "cscart_cp_blog_posts.`status` = 'A'",
          "attached_condition": "(cscart_cp_blog_posts.usergroup_ids = '' or find_in_set(0,cscart_cp_blog_posts.usergroup_ids) or find_in_set(1,cscart_cp_blog_posts.usergroup_ids)) and (cscart_cp_blog_posts.use_avail_period = 'N' or cscart_cp_blog_posts.use_avail_period = 'Y' and cscart_cp_blog_posts.avail_from_timestamp <= 1787607840 and cscart_cp_blog_posts.avail_till_timestamp >= 1787607840)"
        },
        "table": {
          "table_name": "cscart_cp_blog_post_categories",
          "access_type": "ref",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "3",
          "used_key_parts": ["post_id"],
          "ref": ["orbit_cscart_orbit_cscart.cscart_cp_blog_posts.post_id"],
          "rows": 1,
          "filtered": 100,
          "attached_condition": "cscart_cp_blog_post_categories.category_id in (3,1)",
          "using_index": true
        },
        "block-nl-join": {
          "table": {
            "table_name": "cscart_cp_blog_categories",
            "access_type": "ALL",
            "possible_keys": ["PRIMARY"],
            "rows": 2,
            "filtered": 100,
            "attached_condition": "cscart_cp_blog_categories.company_id = 1 and (cscart_cp_blog_categories.usergroup_ids = '' or find_in_set(0,cscart_cp_blog_categories.usergroup_ids) or find_in_set(1,cscart_cp_blog_categories.usergroup_ids)) and cscart_cp_blog_categories.`status` = 'A'"
          },
          "buffer_type": "flat",
          "buffer_size": "256Kb",
          "join_type": "BNL",
          "attached_condition": "cscart_cp_blog_categories.category_id = cscart_cp_blog_post_categories.category_id and (cscart_cp_blog_categories.usergroup_ids = '' or find_in_set(0,cscart_cp_blog_categories.usergroup_ids) or find_in_set(1,cscart_cp_blog_categories.usergroup_ids))"
        }
      }
    }
  }
}

Result

post_id
18
14
12