SELECT 
  SQL_CALC_FOUND_ROWS products.product_id, 
  IF(
    shared_descr.product_id IS NOT NULL, 
    shared_descr.product, descr1.product
  ) as product, 
  companies.company as company_name, 
  cscart_categories.position AS category_position, 
  products_categories.category_id 
FROM 
  cscart_products as products 
  LEFT JOIN cscart_product_features_values as var_val_18 ON var_val_18.product_id = products.product_id 
  AND var_val_18.lang_code = 'en' 
  AND var_val_18.feature_id = 18 
  LEFT JOIN cscart_product_descriptions as descr1 ON descr1.product_id = products.product_id 
  AND descr1.lang_code = 'en' 
  LEFT JOIN cscart_product_prices as prices ON prices.product_id = products.product_id 
  AND prices.lower_limit = 1 
  LEFT JOIN cscart_companies AS companies ON companies.company_id = products.company_id 
  INNER JOIN cscart_products_categories as products_categories ON products_categories.product_id = products.product_id 
  INNER JOIN cscart_categories ON cscart_categories.category_id = products_categories.category_id 
  AND (
    cscart_categories.usergroup_ids = '' 
    OR FIND_IN_SET(
      0, cscart_categories.usergroup_ids
    ) 
    OR FIND_IN_SET(
      1, cscart_categories.usergroup_ids
    )
  ) 
  AND cscart_categories.status IN ('A', 'H') 
  AND cscart_categories.storefront_id IN (0, 1) 
  LEFT JOIN cscart_ult_product_descriptions shared_descr ON shared_descr.product_id = products.product_id 
  AND shared_descr.company_id = 1 
  AND shared_descr.lang_code = 'en' 
WHERE 
  1 
  AND (
    var_val_18.variant_id IN (54456)
  ) 
  AND cscart_categories.category_id IN (261, 258, 293, 292) 
  AND companies.status IN ('A') 
  AND (
    products.usergroup_ids = '' 
    OR FIND_IN_SET(0, products.usergroup_ids) 
    OR FIND_IN_SET(1, products.usergroup_ids)
  ) 
  AND products.status IN ('A') 
  AND prices.usergroup_id IN (0, 0, 1) 
GROUP BY 
  products.product_id 
ORDER BY 
  category_position ASC, 
  category_id, 
  products_categories.position asc, 
  products.product_id ASC 
LIMIT 
  0, 50

Query time 0.00134

JSON explain

{
  "query_block": {
    "select_id": 1,
    "filesort": {
      "sort_key": "cscart_categories.position, products_categories.category_id, products_categories.position, products.product_id",
      "temporary_table": {
        "table": {
          "table_name": "companies",
          "access_type": "system",
          "possible_keys": ["PRIMARY"],
          "rows": 1,
          "filtered": 100
        },
        "table": {
          "table_name": "var_val_18",
          "access_type": "range",
          "possible_keys": [
            "PRIMARY",
            "fl",
            "variant_id",
            "lang_code",
            "product_id",
            "fpl",
            "idx_product_feature_variant_id"
          ],
          "key": "PRIMARY",
          "key_length": "3",
          "used_key_parts": ["feature_id"],
          "rows": 337,
          "filtered": 5.044510365,
          "attached_condition": "var_val_18.feature_id <=> 18 and var_val_18.lang_code <=> 'en' and var_val_18.variant_id <=> 54456 and var_val_18.lang_code = 'en'",
          "using_index": true
        },
        "table": {
          "table_name": "products",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY", "status"],
          "key": "PRIMARY",
          "key_length": "3",
          "used_key_parts": ["product_id"],
          "ref": ["markins_test.var_val_18.product_id"],
          "rows": 1,
          "filtered": 60.5678215,
          "attached_condition": "products.company_id = 1 and (products.usergroup_ids = '' or find_in_set(0,products.usergroup_ids) or find_in_set(1,products.usergroup_ids)) and products.`status` = 'A'"
        },
        "table": {
          "table_name": "shared_descr",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY", "product_id", "company_id"],
          "key": "PRIMARY",
          "key_length": "13",
          "used_key_parts": ["product_id", "lang_code", "company_id"],
          "ref": ["markins_test.var_val_18.product_id", "const", "const"],
          "rows": 1,
          "filtered": 100,
          "attached_condition": "trigcond(shared_descr.lang_code = 'en')"
        },
        "table": {
          "table_name": "products_categories",
          "access_type": "ref",
          "possible_keys": ["PRIMARY", "pt"],
          "key": "pt",
          "key_length": "3",
          "used_key_parts": ["product_id"],
          "ref": ["markins_test.var_val_18.product_id"],
          "rows": 1,
          "filtered": 100
        },
        "table": {
          "table_name": "cscart_categories",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY", "c_status", "p_category_id"],
          "key": "PRIMARY",
          "key_length": "3",
          "used_key_parts": ["category_id"],
          "ref": ["markins_test.products_categories.category_id"],
          "rows": 1,
          "filtered": 100,
          "index_condition": "cscart_categories.category_id in (261,258,293,292)",
          "attached_condition": "(cscart_categories.usergroup_ids = '' or find_in_set(0,cscart_categories.usergroup_ids) or find_in_set(1,cscart_categories.usergroup_ids)) and cscart_categories.`status` in ('A','H') and cscart_categories.storefront_id in (0,1)"
        },
        "table": {
          "table_name": "descr1",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY", "product_id"],
          "key": "PRIMARY",
          "key_length": "9",
          "used_key_parts": ["product_id", "lang_code"],
          "ref": ["markins_test.var_val_18.product_id", "const"],
          "rows": 1,
          "filtered": 100,
          "attached_condition": "trigcond(descr1.lang_code = 'en')"
        },
        "table": {
          "table_name": "prices",
          "access_type": "ref",
          "possible_keys": [
            "usergroup",
            "product_id",
            "lower_limit",
            "usergroup_id"
          ],
          "key": "usergroup",
          "key_length": "3",
          "used_key_parts": ["product_id"],
          "ref": ["markins_test.var_val_18.product_id"],
          "rows": 2,
          "filtered": 56.08769226,
          "attached_condition": "prices.lower_limit = 1 and prices.usergroup_id in (0,0,1)",
          "using_index": true
        }
      }
    }
  }
}

Result

product_id product company_name category_position category_id
524 Gitzo GT1545T Trinple 810 293
579 Gitzo GT1555T Trinple 810 293
512 GT2545T Trinple 810 293
520 Gitzo GT2532 Trinple 810 293
521 Gitzo GT2542 Trinple 810 293
513 GT3532 Trinple 810 293
518 GT3533LS Trinple 810 293
519 GT3542 Trinple 810 293
522 Gitzo GT3542LS Trinple 810 293
523 Gitzo GT4533LS Trinple 810 293
581 Gitzo GT5533LS Trinple 810 293
582 Gitzo GT5543LS Trinple 810 293