SELECT 
  SQL_CALC_FOUND_ROWS products.product_id, 
  descr1.product as product, 
  companies.company as company_name, 
  products.product_type, 
  products.parent_product_id, 
  cscart_product_review_prepared_data.average_rating average_rating, 
  cscart_product_review_prepared_data.reviews_count product_reviews_count 
FROM 
  cscart_products as products 
  LEFT JOIN cscart_product_descriptions as descr1 ON descr1.product_id = products.product_id 
  AND descr1.lang_code = 'vi' 
  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 
  LEFT JOIN cscart_product_review_prepared_data ON cscart_product_review_prepared_data.product_id = products.product_id 
  AND cscart_product_review_prepared_data.storefront_id = 0 
  LEFT JOIN cscart_product_popularity as popularity ON popularity.product_id = products.product_id 
WHERE 
  1 
  AND companies.status IN ('A') 
  AND (
    products.amount > 0 
    OR products.tracking = 'D'
  ) 
  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) 
  AND (
    (
      1 
      AND products.product_id IN (
        298, 4684, 49005, 6368, 46592, 47020, 
        6659, 48235, 48061, 1749, 5608, 2522, 
        27352, 787, 47973
      )
    ) 
    AND companies.status IN ('A') 
    AND prices.usergroup_id IN (0, 0, 1)
  ) 
GROUP BY 
  products.product_id 
ORDER BY 
  popularity.total desc, 
  products.product_id ASC

Query time 0.00542

JSON explain

{
  "query_block": {
    "select_id": 1,
    "filesort": {
      "sort_key": "popularity.total desc, products.product_id",
      "temporary_table": {
        "nested_loop": [
          {
            "table": {
              "table_name": "products",
              "access_type": "range",
              "possible_keys": ["PRIMARY", "status"],
              "key": "PRIMARY",
              "key_length": "3",
              "used_key_parts": ["product_id"],
              "rows": 15,
              "filtered": 52.06833649,
              "index_condition": "products.product_id in (298,4684,49005,6368,46592,47020,6659,48235,48061,1749,5608,2522,27352,787,47973)",
              "attached_condition": "(products.amount > 0 or products.tracking = 'D') 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": "descr1",
              "access_type": "eq_ref",
              "possible_keys": ["PRIMARY", "product_id"],
              "key": "PRIMARY",
              "key_length": "11",
              "used_key_parts": ["product_id", "lang_code"],
              "ref": ["dev_db.products.product_id", "const"],
              "rows": 1,
              "filtered": 100,
              "attached_condition": "trigcond(descr1.lang_code = 'vi')"
            }
          },
          {
            "table": {
              "table_name": "companies",
              "access_type": "eq_ref",
              "possible_keys": ["PRIMARY"],
              "key": "PRIMARY",
              "key_length": "4",
              "used_key_parts": ["company_id"],
              "ref": ["dev_db.products.company_id"],
              "rows": 1,
              "filtered": 100,
              "attached_condition": "companies.`status` = 'A'"
            }
          },
          {
            "table": {
              "table_name": "cscart_product_review_prepared_data",
              "access_type": "eq_ref",
              "possible_keys": ["PRIMARY"],
              "key": "PRIMARY",
              "key_length": "7",
              "used_key_parts": ["product_id", "storefront_id"],
              "ref": ["dev_db.products.product_id", "const"],
              "rows": 1,
              "filtered": 100
            }
          },
          {
            "table": {
              "table_name": "popularity",
              "access_type": "eq_ref",
              "possible_keys": ["PRIMARY", "total"],
              "key": "PRIMARY",
              "key_length": "3",
              "used_key_parts": ["product_id"],
              "ref": ["dev_db.products.product_id"],
              "rows": 1,
              "filtered": 100
            }
          },
          {
            "table": {
              "table_name": "prices",
              "access_type": "ref",
              "possible_keys": [
                "usergroup",
                "product_id",
                "lower_limit",
                "usergroup_id"
              ],
              "key": "product_id",
              "key_length": "3",
              "used_key_parts": ["product_id"],
              "ref": ["dev_db.products.product_id"],
              "rows": 1,
              "filtered": 99.9960556,
              "attached_condition": "prices.lower_limit = 1 and prices.usergroup_id in (0,0,1) and prices.usergroup_id in (0,0,1)"
            }
          },
          {
            "table": {
              "table_name": "products_categories",
              "access_type": "ref",
              "possible_keys": ["PRIMARY", "pt"],
              "key": "pt",
              "key_length": "3",
              "used_key_parts": ["product_id"],
              "ref": ["dev_db.products.product_id"],
              "rows": 1,
              "filtered": 100
            }
          },
          {
            "table": {
              "table_name": "cscart_categories",
              "access_type": "eq_ref",
              "possible_keys": ["PRIMARY", "p_category_id"],
              "key": "PRIMARY",
              "key_length": "3",
              "used_key_parts": ["category_id"],
              "ref": ["dev_db.products_categories.category_id"],
              "rows": 1,
              "filtered": 100,
              "using_index": true
            }
          }
        ]
      }
    }
  }
}

Result

product_id product company_name product_type parent_product_id average_rating product_reviews_count
6659 Tranh Vải Trang Trí In Theo Yêu Cầu, Đồ Trang Trí Mang Đậm Dấu Ấn Cá Nhân, Có 3 Lựa Chọn Kích Cỡ, Ý Tưởng Quà Tặng Ý Nghĩa Mood Up P 0 5.00 5
47020 Vòng Tay Thép “Hoa Hạnh Nhân”, BST Vòng Da Hội Họa, Phong Cách Hiện Đại, Quà Tặng Ý Nghĩa, Phụ Kiện Trang Sức Độc Đáo ĐỎ P 0 4.88 41
48235 Hộp Quà Xà Phòng Thủ Công, Muối Tắm & Tinh Dầu, Xà Phòng Handmade, Xà Phòng Chăm Sóc Da, Tinh Dầu Thiên Nhiên, Quà Tặng Cho Bạn Gái Lecteur De Craft P 0 5.00 4
6368 Hộp Quà Spa Day, Thư Giãn Hoàn Hảo, Chăm Sóc Bản Thân Tại Nhà, Quà Tặng Cho Phụ Nữ, Quà Tặng Sinh Nhật, Quà Tặng Mẹ, Quà Tặng Bạn Gái The Joy Box P 0 5.00 2
1749 Gối Ngải Cứu, Gối Thảo Dược, Gối Làm Nóng Bằng Điện, Giảm Đau Nhức Xương Khớp, Giảm Đau Thần Kinh Tọa Hapaku P 0 4.75 4
787 Bông Tai & Vòng Cổ Be Yourself, Họa Tiết Đường Vân Tự Nhiên Từ Đá Bào Ngư, Điểm Nhấn Độc Đáo Cho Trang Phục, Mang Thông Điệp Ý Nghĩa EMOI Jewelry P 0 5.00 2
298 Dây Treo Đá Phong Thuỷ, Thu Hút Nguồn Năng Lượng Tích Cực, Phù Hợp Với Nhiều Mệnh Khác Nhau, Sản Phẩm Phong Thuỷ Crystals Macrame P 0 5.00 1
4684 Sổ Kế Hoạch Tuần, Ghi Chú Kế Hoạch Size A6, Văn Phòng Phẩm, Sắp Xếp Công Việc, Giấy Chất Lượng OHQUAO P 0 5.00 8
5608 Que Xông Oải Hương, Hương Thơm Dịu Nhẹ, Cải Thiện Chất Lượng Giấc Ngủ, Thư Giãn Tinh Thần, Thanh Lọc Không Gian Sống Khu vườn Thảo Dược P 0
46592 My Life Lessons, Sổ Tay Bài Học Cá Nhân Và Phát Triển Bản Thân, Sổ Ghi Chép, Sổ Tay Cá Nhân, Sổ Tay Bìa Mềm The YOUful P 0 0
47973 Nến Thơm Thủ Công Mùi Hương Thư Giãn, 270Gr, Giải Tỏa Căng Thẳng Và Thư Giãn, Nến Thơm Sáp Thiên Nhiên, Quà Tặng Nến Thơm, Quà Tặng Cho Mọi Dịp Being home P 0 5.00 1
49005 Hộp Quà Treat Yourself, Quà Tặng Cho Nữ, Quà Tặng Hương Thơm, Quà Tặng Thư Giãn, Gối Chườm Thảo Mộc, Xịt Vải, Nến Thơm The Joy Box P 0 0