Вверх ↑
Этот топик читают: Гость
Ответов: 3655
Рейтинг: 69
#106: 2007-09-01 12:01:16 ЛС | профиль | цитата
Tad писал(а):
опять улетел в Гости

Ну прилетишь заходи в гости
карма: 0

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#107: 2007-09-01 12:05:25 ЛС | профиль | цитата
Dilma писал(а):
nesco писал(а):
Снижается, я не спорю, но снижается в любой таблице и с любыми запросами.

нет

Опять голословное доказательство, ничем не подкрепленное.
Dilma писал(а):
Быстрее и удобнее однако...

Это не real-time, и быстродействие мне не нужно. И вообще, почему какое-то нестандартное решение принимается у нас в штыки? Я спросил -- как можно это реализовать, но в ответ, даже намека на подсказку, я получил полное опускание адгоритма, причем голословное. Я реализовал это сам, и опять услышал в ответ только опускание примененных методов. Да и спрашивал я изначально персонально Alexbootcha
nesco писал(а):
Alexbootch, а какими запросами лучше всего сделать перестановку строк в базе?
Мне вообще непонятна эта позиция.
Tad писал(а):
nesco, а так не проще?
Запоминаем две строки, которые нужно поменять местами и два раза выполняем:
UPDATE Channels SET Idx=%1, Color="%2", Channel="%3", Port="%4", Baud=%5, Factor=%6, Lines="%7", Status=%8 WHERE rowid=%9

Да можно и так, в принципе, это -- тоже один из вариантов, но требует дополнительных компонентов.
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#108: 2007-09-01 13:11:27 ЛС | профиль | цитата
Tad писал(а):
Если один пользователь и работать с оглядкой на "delete from table" , то очень даже надежно (из практики).

именно

nesco писал(а):
Опять голословное доказательство, ничем не подкрепленное.

если на
nesco писал(а):
но снижается в любой таблице и с любыми запросами.

не было приведено аргументов, то не вижу смысла приводить их в опровержение.

nesco писал(а):
И вообще, почему какое-то нестандартное решение принимается у нас в штыки?

поправка: решение не только не стандартное, но и не является верным в общем случае. Форум - место общественное и решениями одного написавшего могут бездумно воспользоваться другие. Точно так же, как бездумно в данном посте используется совет из хелпа не делать индексов в маленьких таблицах.

nesco писал(а):
Да и спрашивал я изначально персонально Alexbootcha

есть раздел Личные Сообщения

nesco писал(а):
Я реализовал это сам, и опять услышал в ответ только опускание примененных методов

опускание от разумных замечаний всетаки отличается. Как и тыкание носом от желания дать возможность разобраться человеку во всем самому.

Чтобы разяснить почему использование rowid иногда приводит к потерям данных и программы с его использованием могут работать не так, как планировалось автору вопроса следовало разобраться сначала чем отличается идентификатор строки(rowid) в базе от идентификатора записи(primary index) в базе. После чего следовало понять, что такое индекс(Primary естественно) и зачем он вообще нужен. В противном случае объяснять, почему утверждение из справки не всегда верно и почему rowid это не панацея - бессмыслено.
карма: 27
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#109: 2007-09-01 14:23:50 ЛС | профиль | цитата
Dilma писал(а):
Чтобы разяснить почему использование rowid иногда приводит к потерям данных и программы с его использованием могут работать не так, как планировалось автору вопроса следовало разобраться сначала чем отличается идентификатор строки(rowid) в базе от идентификатора записи(primary index) в базе. После чего следовало понять, что такое индекс(Primary естественно) и зачем он вообще нужен. В противном случае объяснять, почему утверждение из справки не всегда верно и почему rowid это не панацея - бессмыслено.

Вот здесь мы все это обсуждали http://hiasm.1gb.ru/xf/topic.php?t=7798&start=30. И не надо из меня полного идиота делать, rowid не только я применяю. И вот ответ на этот вопрос
Tad писал(а):
nesco, если так делать, как предлагает Alexbootch, то нахрена тебе вообще id INTEGER PRIMARY KEY AUTOINCREMENT ? Объясни - понять не могу.
tsdima, тебе четко объяснил, что оно применяется для связи между таблицами и больше, по большому счету, ни для чего.
И как оказалось, оно действительно не нужно было, так как не было никакой связи между таблицами. Здесь приводилось решение для частного случая без индексации и для одной таблицы, и оно тоже имеет право на существование.
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#110: 2007-09-01 15:41:31 ЛС | профиль | цитата
nesco писал(а):
И не надо из меня полного идиота делать

занятся мне видимо больше нечем, кроме как конструированием идиотов из кого-то.

nesco писал(а):
Вот здесь мы все это обсуждали

Пролистал. Увидел то, о чем уже сто раз было сказано:

1) tsdima объяснил почему нельзя менять primary index:
tsdima писал(а):
Такого запроса нет и быть не должно. PRIMARY KEY используется для связи с другими таблицами. Значение этого поля никогда не должно меняться, т.к. этому числу могут соответствовать записи в других таблицах

истинно так

2) г-н Tad процетировал и добавил пару слов от себя:
Tad писал(а):
tsdima, тебе четко объяснил, что оно применяется для связи между таблицами и больше, по большому счету, ни для чего.

что истинной не является совершенно

3) г-н nesco, привыкший бездумно ссылаться на выдержки из help и цитат с форума теперь считает, что из него делают идиота, советуя как все нормальные люди все же использовать индексы, а не rowid, гарантируя тем самым надежность будущих программ, основанных на схожих по ф-ности алгоритмах.

Итог: вопрос предлагается считать закрытым, поскольку дальнейшее обсуждение ни к чему не приведет из-за полной мешанины информации в этом топике.
карма: 27
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#111: 2007-09-01 16:14:04 ЛС | профиль | цитата
Ну да, конечно, то что пишут на форуме люди, это -- фуфло
Tad писал(а):
Если один пользователь и работать с оглядкой на "delete from table" , то очень даже надежно (из практики).
или на вот это
Tad писал(а):
tsdima, тебе четко объяснил, что оно применяется для связи между таблицами и больше, по большому счету, ни для чего.
Зато, уважаемые люди, отвечая такими фразами
Dilma писал(а):
что истинной не является совершенно
или такими
Dilma писал(а):
привыкший бездумно ссылаться на выдержки из help и цитат с форума
являют собой верх совершенства. И вот совсем нонсенс
Dilma писал(а):
советуя как все нормальные люди все же использовать индексы
которые все советовали как раз наооборот. А посему я вытер все свои решения, что написал, чтобы не было вот такого завления
Dilma писал(а):
Форум - место общественное и решениями одного написавшего могут бездумно воспользоваться другие
Я надеюсь, что это решение всех устроит.
ПИСИ: Я помню как некоторые нормальные люди говорили, что поля типа Blob в HiAsm'e не поддерживаются и даже совета дать не захотели, и всеже было найдено совместное решение, позволяющее без проблем это делать...
Итог: вопрос, тоже, предлагается считать закрытым.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#112: 2007-09-01 20:06:30 ЛС | профиль | цитата
nesco, так попробуй, но для правильной работы нужно переделать MT_String как в http://www.hiasm.com/xf/topic.php?p=66382#P66382
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1mesto.rar [2.2KB] [516]
Разработчик
Ответов: 26113
Рейтинг: 2126
#113: 2007-09-02 01:11:21 ЛС | профиль | цитата
Tad, но ты и задвинул. К чему такие сложности? Я же наоборот, хотел как проще -- минимальным количеством компонентов, больше повесить на запросы, но...

Еще есть маленький вопрос -- а есть ли запросы, позволяющие только одному пользователю работать с базой, например: я посылаю такой запрос о захвате базы на редактирование, а другие, кто попытается открыть после меня, получат фигу, и так до тех пор, пока не будет послан запрос об окончании редактирования?
карма: 22

0
Ответов: 2125
Рейтинг: 159
#114: 2007-09-02 15:14:33 ЛС | профиль | цитата
nesco, я бы всё-таки не советовал использовать в своей практике rowid, по крайней мере потому, что это не является стандартом SQL. Стандартное решение в данном случае: добавить поле MySort и сортировать в запросе по нему, при вставке записи записывать в него максимальное значение +1 (для вообще первой записи, например 1), чтобы переставить записи достаточно лишь обменять у них это поле, например так:
update MyTable set MySort=(%1+%2)-MySort where MySort=%1 or MySort=%2[/code]
чтобы вставить запись после записи со значением MySort=%1 нужно сначала отодвинуть записи так:
update MyTable set MySort=MySort+1 where MySort>%1[/code]
а потом вставить запись со значением MySort=%1+1
Удалять записи можно как обычно.

Для увеличения быстродействия желательно это поле проиндексировать.
карма: 1

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#115: 2007-09-02 16:48:06 ЛС | профиль | цитата
tsdima писал(а):
нужно сначала отодвинуть записи так

А не будет в данном случае быстродействие зависеть от местоположения строки -- чем ближе к началу, тем меньше быстродействие?
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#116: 2007-09-02 22:34:52 ЛС | профиль | цитата
tsdima писал(а):
Для увеличения быстродействия желательно это поле проиндексировать.

да ты чо Нормальные люди индексы не используют в своих таблицах
карма: 27
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#117: 2007-09-02 23:01:06 ЛС | профиль | цитата
Dilma писал(а):
Нормальные люди индексы не используют в своих таблицах

Да ладно вам
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#118: 2007-09-02 23:06:58 ЛС | профиль | цитата
а если еще прикинуть, насколько "быстрее" работает вставка новой записи вначало таблицы при использование rowid, чем предложенный пересчет по полю MySort, то окончательно понимаешь - индексы это
nesco писал(а):
фуфло

карма: 27
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#119: 2007-09-02 23:22:26 ЛС | профиль | цитата
Но я это не к тому писал.
Dilma писал(а):
работает вставка новой записи вначало таблицы при использование rowid
Я отказался от этого режима -- слишком медленный и сильно зависит от размера. Я вообще старался использовать rowid только при доступах к ячейкам для чтения, пока не столкнулся с перемещением строк. Но таблица маленькая и быстродействие для нее не нужно было (хотя на перемещении строк по первому алгоритму затыкалось секунды на две), да и доступ только одного пользователя.
карма: 22

0
Ответов: 1328
Рейтинг: 69
#120: 2007-09-03 18:14:07 ЛС | профиль | цитата
Alexbootch,
Вышла новая версия SQLite 3.4.1.

Для работы с Hiasm новой версии SQLite достаточно замены DLL
карма: 2

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)