Partial evaluation (PE) is an automatic program transformation technique aiming to obtain, among other advantages, the optimization of a program with respect to parts of its input: hence, it is also known as program specialization. This paper introduces the subject of PE into the field of fuzzy logic programming. We define the concept of PE for multi-adjoint logic programs and goals, and apart from discussing the benefits achieved by this technique, we also introduce in the fuzzy setting a completely novel application of PE which allows us the computation of reductants guaranteeing completeness properties without harming the computational efficiency. Reductants are a special kind of fuzzy rules which constitute an essential theoretical tool for proving correctness properties. As observed in the specialized literature, a multi-adjoint logic program, when interpreted on a partially ordered lattice, has to include all its reductants in order to preserve the (approximate) completeness property. This introduces severe penalties in the implementation of efficient multiadjoint logic programming systems: not only the size of programs increases but also their execution time. In this paper we define a refinement to the notion of reductant based on PE techniques, that we call P E-reductant. We establish the main properties of P E-reductants (i.e., the classical concept of reductant and the new notion of P E-reductant are both, semantically and operationally, equivalent) and, what is the best, we demonstrate that our refined notion of P E-reductant is even able to increase the efficiency of multi-adjoint logic programs.