Usando NOT EXISTS
SELECT p.*
FROM TABLE_PRODUCT p
WHERE p.astatus = 'APAST'
AND NOT EXISTS (SELECT NULL
FROM TABLE_USER_OWNED_AUCTION uoa
WHERE uoa.specific_product_id = p.specific_product_id)
Usando LEFT JOIN/IS NULL
SELECT p.*
FROM TABLE_PRODUCT p
LEFT JOIN TABLE_USER_OWNED_AUCTION uoa ON uoa.specific_product_id = p.specific_product_id
WHERE p.astatus = 'APAST'
AND uoa.own_id IS NULL
Explicação
A consulta mais ideal pode ser determinada se as colunas comparadas entre as duas tabelas forem NULLable (IE:se os valores de
specific_product_id em qualquer tabela pode ser NULL ). - Se nullable,
NOT INouNOT EXISTSé a melhor escolha no MySQL - Se NOT nullable, `LEFT JOIN/IS NULL é a melhor escolha no MySQL
Adendo
Depois que a consulta ideal for determinada, dê uma olhada em criando índices (possivelmente cobrindo índices) para pelo menos:
specific_product_idTABLE_PRODUCT.astatus