Чтобы отправить ответ, вы должны войти или зарегистрироваться
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
но я прав?
Думаю вот и ответ:
Думаю - ни один.
Затея интересная, но муторная... вы возьметесь реализовывать? ))
Возможно. Если это будет полезно, то почти наверняка. Смущает тот факт, что разрастание переменных $keywords $categories тоже не способствует быстродействию, т.е. возможно использование дополнительной таблицы лучше... Что скажешь?
1 минуту и 44 секунды спустя:
P.S. Я просто у Тима Конверса как раз читаю главу про архитектуру БД, вот и призадумался.
Отредактировано cmd (13 Jun 2011 20:54:45)
Бывалые пхп-шники советуют создавать для таких задач доп базу с ключами.
В твоем случае можно сделать с тремя колонками - категория, новость, номера кейвордов. Тока для кейвердов придется отдельно запрос так и так писать...
cmd, ваша идея наоборот всё утяжелит. Здесь можно даже и не пробовать, всё и так интуитивно понятно. Рассмотрим пример:
В базе 1000 новостей, 850 из них - в категории "Новости" (категория 1). Следовательно, в таблице categories в записи cat_id=1 поле news будет содержать 850 номеров новостей, разделённых (например) запятыми. Прикиньте размер этого поля и время, которое понадобится хотя бы на одну операцию с этим полем?!!
Так что "перелопачивание" всей таблицы - гораздо более лёгкая операция. Тем более, что запрос не такой уж сложный и объёмный, как вам кажется. Тем более, что это нужно не так часто, как получение других данных из таблиц categories и keywords (например, имён).
ИдеяMiksar'а, ещё более проигрышна, напоминаю:
сделать еще таблицу в которой будут 2 поля - номер категории и номер новости
так как поля category и keywords уже есть в таблице news!!! Зачем создавать ещё одну таблицу и тратить на неё лишние запросы?
Это не моя идея. А советы бывалых.
Например в интернет магазинах так делают сплошь и рядом.
Есть база с товаром - там id прописаны естественно и сам товар.
Есть таблица с категоиями - id категории и описание категории
И таблица с ключами. - номера id-шников новостей и категорий к которым они относятся.
Делается сложный запрос. По запросу к таблице ключей по ИД новости - мы получаем ИД категории.
Так же запросив категорию из таблицы ключей - мы получим все новости относящиеся к этой категории.
А так как эта таблица более легкая - то и скорость более быстрая. (ну это например когда мы просто хотим номера узнать...)
Вот и смотрите - где тут проигрыш, а где выигрыш...
5 минут и 12 секунд спустя:
Да. Вот,ANT-Soft, как Вы считаете запрос с параметром
WHERE RAND()Быстрее чем запрос с параметром
$count = "тут запрос в базу на подсчет количества содержимого в таблице";
LIMIT 0, ".rand(1, $count)."???
Ну и дабы не томить - при малом объеме инфы - до 1000 строк - быстрее первый вариант
до 10000 - второй незначительно выигрывает
выше 10000 - второй выигрывает в разы.
Так что даже 2 запроса - не всегда плохо ![]()
ANT-Soft был прав. Проверил - толку никакого.