>elimine los incides que indicas, setee set collate to general, que es como están generados los indices y nada.. el proceso sigue siendo lento y no optimiziable
¿Estás seguro que los índices fueron creados con "GENERAL"? Pues el default es "MACHINE".
En caso de duda, borrá todos los índices, y volvé a crear sólo el índice por "codigo", con algún codepage que luego seleccionas con SET CODEPAGE, antes de hacer la consulta.
Otra cosa. Me pregunto si ayudaría, si pones sólo el nombre del campo en la condición, SIN el alias:
... where codigo = "xxxxxx"
Ya que estás seleccionando de una sola tabla, no deberían haber ambigüedades.
Por si acaso, la optimización Rushmore funciona sólo si la expresión a ser comparada, en este caso,
codigo, coincide exactamente con la expresión de algún índice (y que además tenga el codepage correcto). Me pregunto si poner el alias, "ctacte.codigo", interfiere. En realidad, no lo creo, pero vale la pena intentar.
Además, verifica cuidadosamente si la expresión de tu índice coincide exactamente con la expresión, que en este caso, simplemente debería ser el campo "codigo".
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)