Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26066
Рейтинг: 2120
#76: 2007-08-30 00:32:04 ЛС | профиль | цитата
Dilma писал(а):
из отвечающих переспросили оба
Уточнение последовало сразу после первого вопроса.
Dilma писал(а):
не был приведен пример
И не будет -- его просто нет, потому и был задан вопрос -- как его лучше сделать? Если бы был пример, то я бы ничего не спрашивал вообще.
Dilma писал(а):
аргументы?

Help писал(а):
Не следует использовать индексы для небольших таблиц

карма: 22

0
Администрация
Ответов: 15294
Рейтинг: 1518
#77: 2007-08-30 00:43:33 ЛС | профиль | цитата
nesco писал(а):
Уточнение последовало сразу после первого вопроса.

После уточнения отвечал только один человек.
Имеем: из отвечающих переспросил 1.
Вывод: вопрос был не понятен в 100% случаев.
Ремарка: кому другим?

nesco писал(а):
И не будет -- его просто нет,

и
nesco писал(а):
А эта таблица у меня маленькая, всего несколько десятков записей.

как понимать? База есть, записи в базе есть, примера нет...

nesco цитирует некий help писал(а):
Не следует использовать индексы для небольших таблиц

а Windows, круче Linux потому, что на первой странице сайта компании Microsoft написано, что их ОС самая лучшая в мире... Десткий сад ей богу.
карма: 26
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#78: 2007-08-30 01:17:37 ЛС | профиль | цитата
Dilma писал(а):
как понимать? База есть, записи в базе есть, примера нет...

Я не хочу это никак пониамть. Один раз про базу ты мне уже написал, когда я привел пример -- с меня хватило. Я совершенно не хочу продолжать эту пустую дискуссию, приводящую в никуда.
Dilma писал(а):
nesco цитирует некий help

Какой "некий" -- тот самый, который у нас http://hiasm.1gb.ru/wiki.php?view=180 И который никто не оспаривал в его правильности. Справка и дана, чтобы на нее опираться и причем тут тогда
Dilma писал(а):
Десткий сад ей богу
Тоже самое я могу сказать и про твои утверждения про индексы, не подкрепленные ничем, одними словами. Так что, давай лучше останемся при своих мнениях и завяжеи эту тему.
ПИСИ. Многие меня тут спрашивали -- "а на кой черт читать всю таблицу", или еще что-то в этом роде. Но это "на кой черт" прекрасно работает уже не первый месяц в непрерывном режиме и по скорости обращения выше чем тот же Interbase или BDE. И нет в этой базе индексации, все работает через rowid.
карма: 22

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#79: 2007-08-30 13:32:23 ЛС | профиль | цитата
Вот так я решил вопрос с перемещениями строк:

-- Удалил, чтобы глаза не мозолило Админам --
карма: 22

0
Администрация
Ответов: 15294
Рейтинг: 1518
#80: 2007-08-30 14:29:59 ЛС | профиль | цитата
точнее по данному решению следовало сказать это:
Вот так нужно почесывать левой ногой правое ухо.

Ремарка к алгоритму:
1) его эффективность нелинейно снижается по мере увеличения размера таблицы и базы в целом
2) надежность алгоритма обеспечивается только при числе одновременных пользователей равными 1. При увеличение количества одновременных пользователей увеличивается вероятность потери данных.
карма: 26
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#81: 2007-08-31 01:08:22 ЛС | профиль | цитата
Dilma писал(а):
его эффективность нелинейно снижается по мере увеличения размера таблицы и базы в целом
Согласен -- алгоритм медленный, но и таблица небольшая (максимум 20 записей). Такой алгоритм на большую таблицу я бы, однозначно, не применил.
Dilma писал(а):
надежность алгоритма обеспечивается только при числе одновременных пользователей равными 1
Больше одного пользователя к этой базе обратиться не сможет. Это база настроек каналов, а она доступна только на одном, ведущем компьютере, где и запущено приложение обработки.
Dilma писал(а):
точнее по данному решению следовало сказать это:
Вот так нужно почесывать левой ногой правое ухо.
И с этим я тоже согласен, но решение для небольшой базы вполне сгодится. И обращаться к этой базе в этом режиме будут, возможно, несколько раз за всю работу приложения и только при необходимой сортировке каналов.

карма: 22

0
Ответов: 1891
Рейтинг: 110
#82: 2007-08-31 15:50:39 ЛС | профиль | цитата
Можно переставлять строки еще и так:
select * from ts WHERE rowid < 5
UNION ALL
select * from ts WHERE rowid = 6
UNION ALL
select * from ts WHERE rowid = 5
UNION ALL
select * from ts WHERE rowid > 6

карма: 0
%time%
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#83: 2007-08-31 16:19:11 ЛС | профиль | цитата
Alexbootch, а какое вверх, и какое вниз?
карма: 22

0
Ответов: 1891
Рейтинг: 110
#84: 2007-08-31 16:49:51 ЛС | профиль | цитата
nesco, писал(а):
Alexbootch, а какое вверх, и какое вниз?


rowid...
1...
2...
3...
4...
6...
5...
7...
8...
9...
......

карма: 0
%time%
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#85: 2007-08-31 19:42:36 ЛС | профиль | цитата
Alexbootch, у меня без ошибок отрабатывает указанные запросы, но в базе все остается на месте. Фактически строки не меняются. Это "теоретически" можно, или ты проверял? Или это, всеже -- запрос на вывод данных в другом порядке?
карма: 22

0
Ответов: 1891
Рейтинг: 110
#86: 2007-08-31 19:52:18 ЛС | профиль | цитата
Это всего лишь вывод данных из таблицы в другом порядке следования строк.
карма: 0
%time%
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#87: 2007-08-31 20:02:29 ЛС | профиль | цитата
Alexbootch, спасибо, учту. Хочу спросить, а переменные можно оформлять в SQLite? Или как обратиться к полям конкретной строки другой таблицы из запроса UPDATE table SET col1=value1, col2=value2 WHERE rowid =%1, с WHERE понятно -- это условие для моей таблицы, а вот значение valueXX должно браться из другой таблицы со своими значениями rowid? Если бы были переменные, то значения valueXX можно получить перед запросом UPDATE.
карма: 22

0
Ответов: 1891
Рейтинг: 110
#88: 2007-08-31 20:40:30 ЛС | профиль | цитата
nesco, писал(а):
Хочу спросить, а переменные можно оформлять в SQLite?


Как понять "оформлять"? Имеешь ввиду получить нужные значения перед выполнением модификации данных?
карма: 0
%time%
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#89: 2007-08-31 20:48:41 ЛС | профиль | цитата
Alexbootch, именно это. Ну например: получить valueXX перед выполнением UPDATE из другой таблицы (можно и из этой же, но из другой строки).
карма: 22

0
Ответов: 1891
Рейтинг: 110
#90: 2007-08-31 21:22:27 ЛС | профиль | цитата
Можно попробовать так:

UPDATE Наименование SET Вид = (SELECT Название FROM Список ) WHERE rowid = 1


либо так:

UPDATE Наименование SET Вид = (SELECT Название FROM Список WHERE rowid = 3 ) WHERE rowid = 2

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