Tengo la siguiente tabla (file_category_tbl
) para representar las conexiones entre los archivos y las categorías.¿Cómo indexar correctamente lo siguiente?
fileId - bigint(20)
categoryId - bigint(20)
order - int(10)
Para que los archivos de una categoría se pueden pedir, tengo un campo de orden ... Por tanto, mi pregunta es ¿qué índices iba a requerir para un rendimiento óptimo en lo siguiente:
SELECT * FROM file_category_tbl WHERE categoryId="3" ORDER BY order ASC
Tengo un índice único UNICO (fileId
, categoryId
); Como no puede haber el mismo fileId
con el mismo categoryId
. También tengo un índice en categoryId
, ya que esto es lo que se está buscando. También tengo un índice en order
? ... pero ¿es esto necesario? ya que sólo está haciendo un orderBy
en este ...
Saludos cordiales a cualquier respondedor ... J
Creo que un índice de varias de 'categoryId, order' debería ser suficiente para la consulta anterior – Ankur
pensé que MySQL no se preocupaba por los índices en la parte' ORDEN BY'. EDITAR: Si mysql puede o no puede usar índices en el 'ORDER BY' depende de mucho: http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html – Krycke