Форум сайта python.su
вот, ещё вариант :)
в данном случае ограничение в 10 вставок ( хотя кол-во нулей можно добавить ), но мой вариант я считаю получше, в нем минимум 64000 вставок до перестройки ключей, хотя ключ может разростись что тоже потребует перестройки
Отредактировано (Июнь 2, 2010 20:23:04)
Офлайн
а, все я понял ваш хитрый план. Но мне почему-то тоже кажется что это какой-то костыль и наверно где-то что-то надо было сделать по-другому :)
А конкретено - не понятен принцип сортировки, например если бы была еще цена, то сортировать для вывода на экран можно было бы по ней. А тут какой-то мифический ключ, по которому и нужно отсортировать. В общем если нет никакого реального параметра по которому можно проводить сортировку для вывода на экран (например цена или дата добавления) то можно ввести виртуальный и сортировать по нему. Например, усовершенствовать вариант, который уже предлагали: добавляем в таблицу еще одно поле, с индексами в нужном отсортированном порядке вещественного типа. Затем когда нам нужно сделать вставку, просто добавляем новую запись, а в качестве сортируемого параметра указываем как уже предлагали (1 + 2) / 2 = 1.5 Разница в том, что мы имеем почти бесконечный запас возможностей для вставки (тк тип записи вещественный и делить на 2 можно досмерти), а так же не пляшем с бубном около id и оставляем его автоинкрементным.
Офлайн
o7412369815963Это типа пессимистический прогноз на входные данные, если пользователь подряд будет вставлять на вторую позицию? Ох он коварный! :)
в данном случае ограничение в 10 вставок
ZubchickЯ привел пример с целыми числами неспроста. И уже не вернулся к предложенному ранее decimal(10, 2).
Разница в том, что мы имеем почти бесконечный запас возможностей для вставки (тк тип записи вещественный и делить на 2 можно досмерти)
ZubchickТут я согласен при определенных исходных условиях (коих мы полностью не знаем).
так же не пляшем с бубном около id и оставляем его автоинкрементным
Отредактировано (Июнь 2, 2010 23:18:50)
Офлайн
Zubchickя тоже думаю что должен быть какой-то более правильный вариант, но пока его никто не подсказал. принцип сортировки должен быть такой что пользователь задает порядок чередования элементов ( при сортировке по цене и думать ничего не надо ).
а, все я понял ваш хитрый план. Но мне почему-то тоже кажется что это какой-то костыль и наверно где-то что-то надо было сделать по-другому :)
А конкретено - не понятен принцип сортировки, например если бы была еще цена, то сортировать для вывода на экран можно было бы по ней.
Офлайн
Lexanderусловия все известны, полностью задачу описал в 3-м посте
Тут я согласен при определенных исходных условиях (коих мы полностью не знаем).
Офлайн
o7412369815963Немного с запозданием, но отвечу…
типа того, но если мне ещё раз нужно будет вставить после “('o7412369815963', 10, 1),”, какой все будет браться и откуда будет браться?
чтение не будет затратным т.к. это простой селект: “select name,VES from table order by VES”
o7412369815963Перечитал пост.
условия все известны, полностью задачу описал в 3-м посте
Офлайн
o7412369815963Размер базы?
условия все известны, полностью задачу описал в 3-м посте
Офлайн
Еще одна идея использовать linked list, а нумерацию проделаешь после запроса. Например как здесь: http://dotnetthoughts.wordpress.com/2008/01/01/persisting-the-doubly-linked-list/ В принципе неважно как ты это реализуешь, но если будешь хранить не порядковый номер, а ParentId, то вставить или поменять местами не составит труда.
Офлайн
nerijusв данном методе вставить элементы можно только к элементам верхнего уровня, к вставленным объектам не вставить… типа того, имхо, да и выборка не простой селект.
Еще одна идея использовать linked list, а нумерацию проделаешь после запроса. Например как здесь: http://dotnetthoughts.wordpress.com/2008/01/01/persisting-the-doubly-linked-list/ В принципе неважно как ты это реализуешь, но если будешь хранить не порядковый номер, а ParentId, то вставить или поменять местами не составит труда.
Офлайн
Lexanderбаза - MongoDB (sql привел для объяснения), сейчас в данной коллекции около 5000 документов, алгоритм хочу с расчетом на будущее (до 1млн), да и вообще полезно знать подобные алгоритмыo7412369815963Размер базы?
условия все известны, полностью задачу описал в 3-м посте
Способ работы с базой (ХП или прямые инсерты)?
Расположение базы?
…
Отредактировано (Июнь 3, 2010 22:25:16)
Офлайн