Duplicar posibles:
Default sort-ordering in MySQL (ALTER TABLE … ORDER BY …;)orden por defecto de MySQL depende de dónde
Tengo una tabla como la siguiente:
CREATE TABLE IF NOT EXISTS `table_test` (
`id` mediumint(8) unsigned NOT NULL,
`country` enum('AF','AX','AL') DEFAULT NULL,
`number` tinyint(3) unsigned DEFAULT NULL,
`sort_order` double unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `country` (`country`),
KEY `id` (`id`,`country`)
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
Tengo una tabla en la que he cambiado el orden predeterminado como:
ALTER TABLE test_table ORDER BY sort_order ASC;
Esta tabla nunca se actualiza y no se eliminan ni añaden registros durante su vida útil. Todo esto parece funcionar de modo que si yo uso la consulta folowwing:
SELECT * FROM test_table LIMIT 10
Devuelve los 10 registros en el orden correcto.
E incluso si uso:
SELECT * FROM test_table WHERE num=3
devuelve los resultados en el orden correcto.
Pero si lo hago
SELECT * FROM test_table WHERE country='AX'
Se devolverá los resultados en orden inverso.
¿Puede alguien decirme cómo puede pasar esto?
'country' está indexado y tal vez el índice' country' no está en el mismo orden que 'sort_order', o no está ordenado en absoluto. O en su caso, se ordenó de forma inversa inversa ... – Vili
_ORDER BY no tiene sentido para las tablas InnoDB que contienen un índice agrupado definido por el usuario (PRIMARY KEY o NOT NULL UNIQUE index). InnoDB siempre ordena las filas de la tabla de acuerdo con dicho índice, si hay una presente._ - http://dev.mysql.com/doc/refman/5.1/en/alter-table.html - Sé que su motor de tabla es MEMORIA, aún Creo que el caso es el mismo. – Vili
Esto parece ser similar a: http://stackoverflow.com/questions/725717/default-sort-ordering-in-mysql-alter-table-order-by .. excepto de documentos: tenga en cuenta que la tabla no permanece en este orden después de insertar y eliminar. Esta opción es útil principalmente cuando usted sabe que la mayoría de las veces debe consultar las filas en un cierto orden. Al usar esta opción después de realizar cambios importantes en la tabla, es posible que pueda obtener un mayor rendimiento. En algunos casos, puede hacer que la clasificación sea más fácil para MySQL si la tabla está en orden por la columna que desea ordenar más adelante ... Podría, no ... confíe en – xQbert