Tad писал(а):
опять улетел в Гости Ну прилетишь заходи в гости
![](/img/smilies/icon_lol.gif)
Ответов: 3655
Рейтинг: 69
|
|||
Tad писал(а): опять улетел в Гости Ну прилетишь заходи в гости ![]() |
|||
карма: 0 |
|
Разработчик
Ответов: 26100
Рейтинг: 2124
|
|||
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 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Tad писал(а): Если один пользователь и работать с оглядкой на "delete from table" , то очень даже надежно (из практики).именно ![]() nesco писал(а): Опять голословное доказательство, ничем не подкрепленное.если на nesco писал(а): но снижается в любой таблице и с любыми запросами.не было приведено аргументов, то не вижу смысла приводить их в опровержение. nesco писал(а): И вообще, почему какое-то нестандартное решение принимается у нас в штыки?поправка: решение не только не стандартное, но и не является верным в общем случае. Форум - место общественное и решениями одного написавшего могут бездумно воспользоваться другие. Точно так же, как бездумно в данном посте используется совет из хелпа не делать индексов в маленьких таблицах. nesco писал(а): Да и спрашивал я изначально персонально Alexbootchaесть раздел Личные Сообщения nesco писал(а): Я реализовал это сам, и опять услышал в ответ только опускание примененных методовопускание от разумных замечаний всетаки отличается. Как и тыкание носом от желания дать возможность разобраться человеку во всем самому. Чтобы разяснить почему использование rowid иногда приводит к потерям данных и программы с его использованием могут работать не так, как планировалось автору вопроса следовало разобраться сначала чем отличается идентификатор строки(rowid) в базе от идентификатора записи(primary index) в базе. После чего следовало понять, что такое индекс(Primary естественно) и зачем он вообще нужен. В противном случае объяснять, почему утверждение из справки не всегда верно и почему rowid это не панацея - бессмыслено. |
|||
карма: 27 |
|
Разработчик
Ответов: 26100
Рейтинг: 2124
|
|||
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 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
nesco писал(а): И не надо из меня полного идиота делатьзанятся мне видимо больше нечем, кроме как конструированием идиотов из кого-то. nesco писал(а): Вот здесь мы все это обсуждалиПролистал. Увидел то, о чем уже сто раз было сказано: 1) tsdima объяснил почему нельзя менять primary index: tsdima писал(а): Такого запроса нет и быть не должно. PRIMARY KEY используется для связи с другими таблицами. Значение этого поля никогда не должно меняться, т.к. этому числу могут соответствовать записи в других таблицахистинно так 2) г-н Tad процетировал и добавил пару слов от себя: Tad писал(а): tsdima, тебе четко объяснил, что оно применяется для связи между таблицами и больше, по большому счету, ни для чего.что истинной не является совершенно 3) г-н nesco, привыкший бездумно ссылаться на выдержки из help и цитат с форума теперь считает, что из него делают идиота, советуя как все нормальные люди все же использовать индексы, а не rowid, гарантируя тем самым надежность будущих программ, основанных на схожих по ф-ности алгоритмах. Итог: вопрос предлагается считать закрытым, поскольку дальнейшее обсуждение ни к чему не приведет из-за полной мешанины информации в этом топике. |
|||
карма: 27 |
|
Разработчик
Ответов: 26100
Рейтинг: 2124
|
|||
Ну да, конечно, то что пишут на форуме люди, это -- фуфло
Tad писал(а): Если один пользователь и работать с оглядкой на "delete from table" , то очень даже надежно (из практики).Tad писал(а): tsdima, тебе четко объяснил, что оно применяется для связи между таблицами и больше, по большому счету, ни для чего.Dilma писал(а): что истинной не является совершенноDilma писал(а): привыкший бездумно ссылаться на выдержки из help и цитат с форума Dilma писал(а): советуя как все нормальные люди все же использовать индексыDilma писал(а): Форум - место общественное и решениями одного написавшего могут бездумно воспользоваться другиеПИСИ: Я помню как некоторые нормальные люди говорили, что поля типа Blob в HiAsm'e не поддерживаются и даже совета дать не захотели, и всеже было найдено совместное решение, позволяющее без проблем это делать... Итог: вопрос, тоже, предлагается считать закрытым. |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco, так попробуй, но для правильной работы нужно переделать MT_String как в http://www.hiasm.com/xf/topic.php?p=66382#P66382
|
|||
карма: 25 |
| ||
файлы: 1 | mesto.rar [2.2KB] [498] |
Разработчик
Ответов: 26100
Рейтинг: 2124
|
|||
Tad, но ты и задвинул. К чему такие сложности? Я же наоборот, хотел как проще -- минимальным количеством компонентов, больше повесить на запросы, но...
Еще есть маленький вопрос -- а есть ли запросы, позволяющие только одному пользователю работать с базой, например: я посылаю такой запрос о захвате базы на редактирование, а другие, кто попытается открыть после меня, получат фигу, и так до тех пор, пока не будет послан запрос об окончании редактирования? |
|||
карма: 22 |
|
Ответов: 2125
Рейтинг: 159
|
|||
nesco, я бы всё-таки не советовал использовать в своей практике rowid, по крайней мере потому, что это не является стандартом SQL. Стандартное решение в данном случае: добавить поле MySort и сортировать в запросе по нему, при вставке записи записывать в него максимальное значение +1 (для вообще первой записи, например 1), чтобы переставить записи достаточно лишь обменять у них это поле, например так:
|
|||
карма: 1 |
|
Разработчик
Ответов: 26100
Рейтинг: 2124
|
|||
tsdima писал(а): нужно сначала отодвинуть записи такА не будет в данном случае быстродействие зависеть от местоположения строки -- чем ближе к началу, тем меньше быстродействие? |
|||
карма: 22 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
tsdima писал(а): Для увеличения быстродействия желательно это поле проиндексировать.да ты чо ![]() ![]() |
|||
карма: 27 |
|
Разработчик
Ответов: 26100
Рейтинг: 2124
|
|||
Dilma писал(а): Нормальные люди индексы не используют в своих таблицах Да ладно вам ![]() |
|||
карма: 22 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
а если еще прикинуть, насколько "быстрее" работает вставка новой записи вначало таблицы при использование rowid, чем предложенный пересчет по полю MySort, то окончательно понимаешь - индексы это
nesco писал(а): фуфло |
|||
карма: 27 |
|
Разработчик
Ответов: 26100
Рейтинг: 2124
|
|||
Но я это не к тому писал.
Dilma писал(а): работает вставка новой записи вначало таблицы при использование rowid |
|||
карма: 22 |
|
Ответов: 1328
Рейтинг: 69
|
|||
Alexbootch,
Вышла новая версия SQLite 3.4.1.
Для работы с Hiasm новой версии SQLite достаточно замены DLL ![]() |
|||
карма: 2 |
|