asdf27
24.06.2013 - 00:47
Представим что есть информационный сайт со 100к статьями и 500к комментариями (строю с запасом). Скажите, будет ли реальная экономия, если вместо прочёсывания таблицы с комментами по id статьи ______ сделать при добавлении нового коммента дописывание в статью через разделитель?
Т.е. в таблице articles сделать столбец comments_id и в него писать id;id;id;id, а при выводе комментов просто разбирать id'шники и выводить? Повторюсь, комментов 500к (в примере).
Winston
24.06.2013 - 00:51
Нет, не лучше... А потом как ты будешь получать, к примеру все комменты к статье? Будешь id'шники на массив разбивать? Сколько памяти на это может понадобиться, не думал?
Nikitian
24.06.2013 - 00:53
Выборка по primory key будет быстрее, чем по любому другому ключу - факт. Только вот это решение не расширяемо и те, кто будут после вас работать с этим кодом, "спасибо" точно не скажут, а скорее заставят икать до самого смертного одра.
asdf27
24.06.2013 - 00:56
Т.е. проход 500к записей меньше ест чем разбор массива из 10(+10) элементов с последующим выводом? И еще вопрос, в каком случае меньше времени на генерацию уйдет? Сейчас VPS'ка с 2 ГБ памяти.
asdf27
24.06.2013 - 00:58
Цитата (Nikitian @ 23.06.2013 - 20:53) |
Выборка по primory key будет быстрее, чем по любому другому ключу - факт. Только вот это решение не расширяемо и те, кто будут после вас работать с этим кодом, "спасибо" точно не скажут, а скорее заставят икать до самого смертного одра. |
А в чем проблема? В таблице комментов будет дублироваться id статьи.
Nikitian
24.06.2013 - 00:58
Так не будет никакого прохода по 500к записей. Будет выборка по индексу. Индекс у вас будет занимать пару мегабайт в памяти.
Время на генерацию зависит от множества факторов и тут даже приблизительно нельзя ничего сказать. надо смотреть конкретную реализацию.
asdf27
24.06.2013 - 00:59
Цитата (asdf27 @ 23.06.2013 - 20:56) |
Т.е. проход 500к записей меньше ест чем разбор массива из 10(+10) элементов с последующим выводом? И еще вопрос, в каком случае меньше времени на генерацию уйдет? Сейчас VPS'ка с 2 ГБ памяти. |
База MySQL
asdf27
24.06.2013 - 01:01
Цитата (Nikitian @ 23.06.2013 - 20:58) |
Так не будет никакого прохода по 500к записей. Будет выборка по индексу. Индекс у вас будет занимать пару мегабайт в памяти.
Время на генерацию зависит от множества факторов и тут даже приблизительно нельзя ничего сказать. надо смотреть конкретную реализацию. |
Я имею ввиду запрос вида
SELECT * FROM comments WHERE article='$article'
Не совсем понимаю, пошел читать про индексы.
Valick
24.06.2013 - 07:11
asdf27, не забывайте что 500к коментов за один раз никто дергать не будет, в здравом уме и трезвой памяти, а уж тем более "выплевывать" все это в браузер. Для таких вещей используется постраничная навигация и тут-то ваше "ноу-хау" сделает вам "секир-башка" с предварительным "выносом мозга"...
_____________
Стимулятор ~yoomoney - 41001303250491
Цитата (Valick @ 24.06.2013 - 03:11) |
asdf27, не забывайте что 500к коментов за один раз никто дергать не будет, в здравом уме и трезвой памяти, а уж тем более "выплевывать" все это в браузер. Для таких вещей используется постраничная навигация и тут-то ваше "ноу-хау" сделает вам "секир-башка" с предварительным "выносом мозга"... |
Вы о чем? Вы куда?
500к комментов - суммарное количество. На каждую статью не более 20 комментов приходится.
ЕЩЕ ВОПРОСВ таблице статей будет поле cats, содержащее массив id'шников категорий через разделитель. При выводе категории, эти поля будут разбираться (требуется возможность указать несколько категорий при сохранении).
Скажите, если для этого поля я сделаю обычный индекс, а для id в таблице категорий уникальный, это будет быстрее, нежели без обычного индекса в поле cats?
Правильно ли я понимаю, что при запуске mysql-сервера сразу происходит индексирование?
Еще кое-что забыл. Не будет ли лучше ввести промежуточную таблицу id_статьи|id_рубрики ? При сохранении нужно блокировать таблицу?
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.