2013-08-05 2 views
0

Мне нужно вставить строки данных в определенном порядке. Иногда я забываю вставить строку вовремя, и мне нужно вставить ее позже. Другие строки заняли свое место, хотя и до сих пор я вручную (программно, конечно) меняю индекс разного количества строк - это может быть пара строк или сотен строк. Это не очень эффективно, и я искал другой путь. Моя мысль заключалась в том, чтобы упорядочить по дате и создать число «индекс дня», чтобы переупорядочить только записи дня, но я блуждал ... есть ли способ mysql для изменения порядка строк? То есть информировать mysql о требуемой позиции строки и затем обновить первичные ключи?mysql database insert row между записями

+1

MySQL не гарантирует порядок строк, если вы не указали предложение 'ORDER BY' в запросе' SELECT'. Добавьте свои данные, и они будут возвращены в том порядке, о котором вы просите. –

+0

@Mike W: Как я могу это сделать? Я знаю, как использовать команду order, но для этого нужно что-то (номер индекса, что-то ...), но, как я уже описал, индекс запущен моей задержкой. – pzogr

+0

Не видя структуры таблицы, я не могу сказать. –

ответ

0

Я думаю, вам нужно посмотреть на ваш дизайн стола. На самом деле это не проблема для большинства приложений, поскольку она была бы рассмотрена с самого начала.

Теперь вам нужно добавить столбец DateTime в свою таблицу и инициализировать его некоторыми разумными значениями для данных, которые уже есть. По мере добавления новых строк установите столбец DateTime в каждой новой строке в фактическое DateTime. Если вам нужно добавить строку позже, установите DateTime на время, когда была добавлена ​​запись ..

Когда вы запрашиваете свою таблицу, используйте ORDER BY myDateTime (или что бы вы решили назвать). Строки должны отображаться в правильном порядке.

Для небольших таблиц (менее нескольких тысяч строк) индекс может не сильно помочь. Для больших таблиц вы должны индексировать столбец DateTime. Вам нужно будет запустить несколько тестов, чтобы увидеть, что лучше всего работает.

+0

Вы также предлагаете добавить время? У меня уже есть столбец даты. Это, вероятно, сработает ... и я думаю, что это лучшее предложение до сих пор, потому что это исправит 99% случаев. Это может быть проблемой, хотя, если мне нужно вставить много строк. Для вставки строки требуется всего несколько секунд, поэтому время между строками никогда не превышает 5-8 секунд. Итак ... что, если мне нужно вставить более 5-8 строк подряд? – pzogr

0

Что вы думаете на самом деле является решением. Создайте столбец «Дата», если он еще не установлен, а затем «Создать индекс» в этом поле, также используйте «Заказ» в вашем запросе. Нет никакого способа, кроме руководства, и даже если есть не рекомендуется играть с MYSQL способом хранения строк, потому что хранилище строк выполняется с помощью DB Engine, и это не идеально, чтобы играть с ними, поскольку они хранят строку в лучшем оптимальным образом, поэтому зачем мешать их эффективности для такой маленькой вещи.

+0

, вероятно, это то, что мне нужно сделать, потому что я не хочу играть с первичными ключами ... Я просто надеялся, что У mysql был какой-то способ сделать это для меня. – pzogr