Olası Çoğalt:MySQL varsayılan sipariş bağlıdır NEREDE
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;
Değiştiğimi kendisi için bir tablo vardır:
Default sort-ordering in MySQL (ALTER TABLE … ORDER BY …;)
Böyle bir tablo var varsayılan sipariş gibi:
ALTER TABLE test_table ORDER BY sort_order ASC;
Bu tablo hiçbir zaman güncellenmez ve ömrü boyunca herhangi bir kayıt silinmez veya eklenemez.
SELECT * FROM test_table LIMIT 10
Doğru sırayla 10 kayıtları döndürür: Bu, tüm ı folowwing sorgusu kullanmak eğer öyleyse çalışıyor gibi görünüyor.
Ve kullansanız bile:
SELECT * FROM test_table WHERE num=3
doğru sırayla sonuçları döndürür. Ben
SELECT * FROM test_table WHERE country='AX'
yaparsanız
Ama O ters sırayla sonuçları döndürür.
Birisi bunun nasıl olabileceğini söyleyebilir mi?
'country' endeksli ve belki de' country' endeksi 'sort_order' ile aynı sırada değil veya hiç sipariş edilmiyor. Ya da sizin durumunuzda yanlışlıkla tersine döndürülür ... – Vili
_ORDER BY, kullanıcı tanımlı kümelenmiş bir dizin (PRIMARY KEY veya NOT NULL UNIQUE dizinini) içeren InnoDB tabloları için anlam ifade etmez. InnoDB, her zaman mevcutsa, böyle bir endekse göre tablo satırlarını sipariş eder - http://dev.mysql.com/doc/refman/5.1/en/alter-table.html - Masanızın motorunun MEMORY olduğunu biliyorum. Bence durum aynı. – Vili
Bu, şunun gibi görünüyor: http://stackoverflow.com/questions/725717/default-sort-ordering-in-mysql-alter-table-order-by .. docs dışında: tablonun kalmayacağını unutmayın. bu sırayla ekler ve siler. Bu seçenek, çoğunlukla satırların çoğu zaman belirli bir sırada sorguladığınızı bildiğinizde yararlıdır. Bu seçeneği, tablodaki büyük değişikliklerden sonra kullanarak daha yüksek performans elde edebilirsiniz. Bazı durumlarda, eğer tablo, daha sonra sipariş etmek istediğiniz sütun tarafından sıralıysa, MySQL için sıralama daha kolay hale getirebilir ... Might, Mayıs ... – xQbert