За последние 24 часа нас посетили 17982 программиста и 1650 роботов. Сейчас ищут 1178 программистов ...

Как правильнее, много с одной или одна со многими?

Тема в разделе "MySQL", создана пользователем ShamahN, 18 мар 2008.

  1. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    В общем вопрос, наверное, больше организационный:)
    Подскажите, плиз, как будет более оптимальнее с точки зрения производительности, наверное
    В общем есть у меня набор (практически неограниченныый) всяческой техники которую продаю. Начиная от гвоздей (грубо) заканчивая (грубо) самолетами. Каждая из единица, естественно, может обладать произвольным набором характеристик, некоторые из которых могут, естественно, пересекаться.
    Так вот, суть проблемы: как правильнее реализовать такую структуру, вот так:

    1. id, idDevice, char1, char1, char3, ..., charn
    естественно, что набор полей в большинстве случаев будет большим чем необходимо. Плюс - возникают неудобства: необходимо помнить, что же каждая характеристика (charx) значит для определенного девайса.

    И второй подход, который я придумал. Реализуется он структурой из двух таблиц, первая - описание характеристики:
    1. id, name, fulllName, ei (типа единица иизмерения)
    и вторая, очень похожа на описанную ранее:
    2. id, idDevice, idChar (связь с предыдущей таблицей), value

    Второй способ мне больше по душе, т.к. не составит никаких проблем завести еще одну табличку и объединить схожие характеристики в группы и ваабще мне кажется более удобным.

    и получается, что в результате реализации первой схемы, мы будем иметь очень "широкую" таблицу, но имеющую в каждой записи кучу пустых полей. Реализуя вторую схему, мы получаем очень гибкий механизм, но получаем очень "длинную" таблицу характеристик.

    Подскажите, плиз, какая из схем будет более оптимальна?
    Заранее спасибо
     
  2. Anonymous

    Anonymous Guest

    Вторая, естественно.
     
  3. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    я так и думал.. но меня смущает, что оч длинная табличка будет. Как начнет мне по пол часа запросы выполнять....
     
  4. Anonymous

    Anonymous Guest

    Ты не видел длинных табличек. Это ее основное предназаначение. Хранить большие обьемы данных.
     
  5. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Ок. Спасибо
     
  6. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    У меня табличка есть, в реальном проекте - 48 полей, из них штук 5 varchar 255 длиной, штук 20 - varchar от 50 до 150 длиной.
    Записей - около 20 000.
    Общий вес базы около 100 мегабайт (основной вес базы (90-95%) - эта таблица).
    В день около 200 тысяч запросов к этой таблице.
    Летает, аки лебедь. :) Время генерации страниц - в пределах 2 секунд.
     
  7. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    а кто хостер?
     
  8. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    чёртов мастерхост. Хостер - отличный. Ни глюков, ни тормозов - ничего плохого за всё время хостинга у них не было.
    Один раз было - у них добрые електрики из МосЭнерго перепутали кабеля и отключили их здание. Бесперебойников хватило на полдня. Ещё полдня они монотонно отвечали по телефону - "мы работаем над этим вопросом, скоро должны включить". Всё. Больше никаких затыков с 2005 года не было.

    Но техподдерка у них - не просто никакая, она отсутствует. Мальчики по объявлению, нифига вообще не знающие. Умеют только реагировать на ключевые слова и зачитывать текст с бумажки по этим ключевым словам.
     
  9. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Понятно. У меня Валуехост и самые простые запросики зависают по 2-3 секунды. По-этому и опосаюсь
     
  10. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Что-то либо с каналом, либо с dns-ом.
    Попробуй скриптом попинговать сервак, с замером времени. И посмотри на результаты. По ним можно понять, в чём причина.
     
  11. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    а как это сделать? :)
     
  12. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    RomanBush
    А я думал только я такой извращенец... :)
     
  13. Clone

    Clone Guest

    2 секунды это летает? :shock:
     
  14. Anonymous

    Anonymous Guest

    ааа... это тот, откуда от рутовых аккаунтов пароли ко мне попадают раз в полгода? )
     
  15. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    100 мегабайтная таблица при нескольких параллельных запросах в секунду? 2 секунды - это летает.
    Когда нагрузка не пиковая - время генерации страницы от 0,02 до 0,1 секунды.
     
  16. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    а уверен что стоит так?
     
  17. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Уверен, что это кривое решение. Но пока нет ни времени, ни желания переделывать.
    Да и - "работает? Не трожь!". :)
     
  18. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Раз с основным вопросом разобрались, под шумок оффтопный вопрос. Я не понимаю сути задавать полю varchar определённую длинну. varchar ведь сам подстраивает длинну. "вася" в поле varchar(5) и varchar(255) будет рассматриваться как одно и тоже. Расходов будет одинакого - 5 байтов... В чём разница?