За последние 24 часа нас посетили 18736 программистов и 1608 роботов. Сейчас ищут 914 программистов ...

После удаления строки она добавляется на место удалённой

Тема в разделе "PHP и базы данных", создана пользователем den_1973, 22 фев 2011.

  1. den_1973

    den_1973 Активный пользователь

    С нами с:
    13 дек 2010
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте!
    Извиняюсь заранее так как только начал заниматься MySQL и прошу прощения если мой вопрос окажется слишком простым но я облазил весь инет и так не нашел ответа на мой вопрос, наверное пока не научился как надо искать но я стараюсь.

    Обращаюсь к местным гуру!

    У меня база MySQL
    В ней автоинкрементный id и другие колонки
    Когда через сайт добавляются строки то все нормально, но если я удаляю где-то в середине то при следующей вставки строки она попадает на место той последней которая была мной удалена через сайт, а мне нужно чтобы она вставала последней в таблице.
    ---
    То есть у меня например такие id
    1
    2
    3
    4
    5
    ---
    После удаления id 3
    1
    2
    4
    5
    ---
    После добавления id 6
    1
    2
    6
    4
    5
    ---
    А нужно чтобы было
    1
    2
    4
    5
    6
    ---

    Зачем мне это нужно?

    Если у меня соблюдается последовательность добавлений данных в таблице то отображая данные в цикле соблюдается последовательность в которой были данные добавлены, а это мне важно.
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    order by id ...?=)
     
  3. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    я бы даже сказал order by id asc )))
    системе управления базами данных всё равно, в каком порядке вы что добавляете. логически все записи хранятся независимо друг от друга. но из-за того что индексы и записи занимают место, становится выгодным хранить физически записи подряд, а не вразброс, и новая запись становится на место старой. select * from `tab` order by `id` asc определяет новый порядок выдачи
     
  4. den_1973

    den_1973 Активный пользователь

    С нами с:
    13 дек 2010
    Сообщения:
    5
    Симпатии:
    0
    Invision
    Да, это для вывода подходит, спасибо )) Но в самой таблице очередность id находится в беспорядочном состоянии.
    У меня еще вопрос, есть ли смысл сортировать всю таблицу по id упорядочивая их по возрастанию, или лучше не трогать?
     
  5. den_1973

    den_1973 Активный пользователь

    С нами с:
    13 дек 2010
    Сообщения:
    5
    Симпатии:
    0
    titch
    То есть, если скажем в MySQL было устроено что каждая последующая запись заносится в конец, то удаленные индексы оставляют дырки и это хуже системе?
    Скажем в таблице удаляем 100 индексов, и последующее заполнение будет именно этих грубо говоря 100 дырок или только последний удаленный индекс имеет заполнение?
     
  6. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    Мускул так устроен, что физикой хранения он знанимается сам. Если скорость доступа становится неоптимальной, то он может по своему усмотрению при каком-то из запросов дефрагментировать базу. Вы никак на это повлиять не можете (если очень глубоко копать, то можете, но я не советую). Пользователю предоставляются инструменты для работы с логикой базы, и, я уверяю, этого вполне достаточно.
     
  7. den_1973

    den_1973 Активный пользователь

    С нами с:
    13 дек 2010
    Сообщения:
    5
    Симпатии:
    0
    titch
    Кажись понятно, наверное такие программы как Navicat немного путают новичка, когда смотришь в таблицу и ужасаешься от последовательности данных, и не понимаешь как это все может нормально быть при выводе на страницу ))
    Это все наверное из-за того что работая с файловыми базами, привыкаешь что все должно иметь свою последовательность и через цикл можно прочитать и вывести. А тут в мускуле, на тебе, когда смотришь через программы просмотра таблицы то каша-малаша, и с чем бы ее съесть ))