T.R.O.N: рекомендую отдавать предпочтение грамотному решению задач.
В вашем случае использование баз ведет не только к нагрузкам но и очень тяжелым методам решения.
Базы хороши только там, где есть задачи для них. Ваш случай не из этого числа.
Я думаю эт свиду только кажеться что всё там просто и там база не нужна.. Поверте мне, работы там было больше чем достаточно и без баз это рано или поздно выдалобы Error 500
T.R.O.N: а для решения проблемвы все что было нужно? просто не юзать базы. Ведь в этом случае? как е еще в 90 из 100 БД не нужный!! нужны грамотные файлы с последовательным доступом + грамотный кеш, который созжается за пару дней
Ну я отдаю предпочтение базам, файлы использую еси там минизапись какая-то ну вообщем редко.. Кеширование покамись не добавлял, еси будут большая нагрузка то припаяю кешинг)))
netwind: нету и даже это неправильно. нужна двойная сортировка order by views,primary_id и условие primary_id>NNN чтобы полностью стабилизировать порядок.
но если там идет расчет чего-то для каждого значения в таблице, то можно в сессионных переменных mysql хранить предыдущие значения и использовать эти значения в вычислениях. техника несколько непривычная и неудобная, так что нужно взвесить стоит ли.
ну кпримеру нам известен основной ID, эт 14 и поле VIEWS у него равно 78, узнать соседние поля вполне можно узнать так:
SELECT * FROM TABLE WHERE `views`<78 LIMIT 1
SELECT * FROM TABLE WHERE `views`>78 LIMIT 1
Но тогда если значение views ещё у нескольких полей будет 78, то мой вариант не сработает.. Вот собственно полез на форум..
netwind По поводу двойной сортировки, чтото не пойму зачем order by views,primary_id и условие primary_id>NNN, что тут стабилизировать? Соседний primary_id может быть 1 и может быть 999 и условие primary_id>NNN тут явно невтему..
Кстате была идея вывести все записи в определенной сортировке и загнать значения в массив и потом достать ИД соседних полей.., но эт сильно грузить сервер будет, а такбы не побрезговалбы, ггг
T.R.O.N: А что мешает считать структуру таблицы?
select colname
from syscolumns
where tabid = (select tabid from systables where tabname = 'tablename');
или типа select * from mytable where 1=0
Сорри, недавно проснулся и толком криво поставил вопрос.., нужно найти соседние строки и желательно 1м запросом..
рекомендую отдавать предпочтение грамотному решению задач.
В вашем случае использование баз ведет не только к нагрузкам но и очень тяжелым методам решения.
Базы хороши только там, где есть задачи для них. Ваш случай не из этого числа.
Я думаю эт свиду только кажеться что всё там просто и там база не нужна.. Поверте мне, работы там было больше чем достаточно и без баз это рано или поздно выдалобы Error 500
а вдруг существуют грамотные базы?
Грамотная структура базы? Или ты про SQLite?
а для решения проблемвы все что было нужно? просто не юзать базы. Ведь в этом случае? как е еще в 90 из 100 БД не нужный!! нужны грамотные файлы с последовательным доступом + грамотный кеш, который созжается за пару дней
Ну я отдаю предпочтение базам, файлы использую еси там минизапись какая-то ну вообщем редко.. Кеширование покамись не добавлял, еси будут большая нагрузка то припаяю кешинг)))
Мальчики не ссортесь) И так норм помогли, все варианты полезны для рассмотрения.. СЕнКС!
Ну вообщем в итоге с затеей листинга, т.е показа соседних записей передумал, нужно было для http://bomz.org
Думаю оно там не нужно, да и нагрузка дополнительная с этими телодвижениями..
нету и даже это неправильно.
нужна двойная сортировка order by views,primary_id и условие primary_id>NNN чтобы полностью стабилизировать порядок.
но если там идет расчет чего-то для каждого значения в таблице, то можно в сессионных переменных mysql хранить предыдущие значения и использовать эти значения в вычислениях. техника несколько непривычная и неудобная, так что нужно взвесить стоит ли.
ну кпримеру нам известен основной ID, эт 14 и поле VIEWS у него равно 78, узнать соседние поля вполне можно узнать так:
SELECT * FROM TABLE WHERE `views`<78 LIMIT 1
SELECT * FROM TABLE WHERE `views`>78 LIMIT 1
Но тогда если значение views ещё у нескольких полей будет 78, то мой вариант не сработает.. Вот собственно полез на форум..
netwind По поводу двойной сортировки, чтото не пойму зачем order by views,primary_id и условие primary_id>NNN, что тут стабилизировать? Соседний primary_id может быть 1 и может быть 999 и условие primary_id>NNN тут явно невтему..
Кстате была идея вывести все записи в определенной сортировке и загнать значения в массив и потом достать ИД соседних полей.., но эт сильно грузить сервер будет, а такбы не побрезговалбы, ггг
А что мешает считать структуру таблицы?
select colname
from syscolumns
where tabid = (select tabid from systables where tabname = 'tablename');
или типа select * from mytable where 1=0
Сорри, недавно проснулся и толком криво поставил вопрос.., нужно найти соседние строки и желательно 1м запросом..
Выход есть...