|
|
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток всем! Есть такой вопрос: Как сказывается на быстродействии то, что я стараюсь делать как можно меньше таблиц? Например: есть таблицы T1, T2, T3. Отношения между ними: T1#T2=M:M, T1#T3=M:M. То есть нужны еще две таблицы связей. Что лучше с точки зрения производительности: две таблицы связей или лучше иметь одну, но с флажком: в ней будет одно поле для id первой T1, затем еще одно поле - id записи одной из двух других и еще флажок, значение в котором будет показывать, какой же именно из вторых таблиц записано в таблице связей второе id? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 08:49 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Если свалить все свои шмотки посредине комнаты, то утром можно будет одеться значительно быстрее. Не надо лазить в шкаф. Верно до тех пор, пока шмоток не очень много. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 09:04 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Я бы не сказал что чем больше таблиц тем быстрее и наоброт, тут все зависит от задачи и что и как вы планируете выбирать/загружать потом из этих таблиц. Как всегда нужно выбрать золотую середину :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 09:15 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
То есть я так понял, что серверу значительно быстрее работать с одной таблицей связей и флажком, чем с десятком разных, но без флажка?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 09:16 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
INSERT и SELECT таблиц будет делаться на несколько порядков больше, чем UPDATE. Работа с таблицами связей, если их двое - разница невелика, меньше, чем на порядок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 09:17 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Простите. а как вы собираетесь заносить данные в таблицу связей + помечать нужные флажком?? это у вас получится?? Улыбайтесь чаще, людей это раздражает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 10:09 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEДоброго времени суток всем! Есть такой вопрос: Как сказывается на быстродействии то, что я стараюсь делать как можно меньше таблиц? Например: есть таблицы T1, T2, T3. Отношения между ними: T1#T2=M:M, T1#T3=M:M. То есть нужны еще две таблицы связей. Что лучше с точки зрения производительности: две таблицы связей или лучше иметь одну, но с флажком: в ней будет одно поле для id первой T1, затем еще одно поле - id записи одной из двух других и еще флажок, значение в котором будет показывать, какой же именно из вторых таблиц записано в таблице связей второе id?Проектировщик в последнюю очередь должен думать о количестве таблиц. В первую очередь -- о качестве проекта, о его сопровождаемости. Вопросы производительности следует решать тогда, когда это действительно необходимо. Причем для оптимизации производительности нужно обладать достаточно глубокими знаниями об особенностях работы СУБД в целом и конкретной СУБД в частности. Судя по вашему вопросу, вы начинающий проектировщик. Поэтому советую просто учиться проектировать правильно, а не пытаться дилетантски "оптимизировать" ваш проект, тем более, что я уверен на 100% -- никакой реальной проблемы производительности в вашем проекте у вас нет и не будет. IMHO, к вашему случаю отлично подходят известные слова Дональда Кнута "Premature optimization is the root of all evil". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 10:37 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEКак сказывается на быстродействии то, что я стараюсь делать как можно меньше таблиц? Скорее - плохо сказывается, хотя это изрядно бессмысленный вопрос. Его "бытовая" аналогия примерно такова - "как сказывается на безопасности движения то, что я стараюсь всегда ехать в левом ряду". Таблиц нужно делать не "как можно меньше", а "столько, сколько нужно, и не больше". В том же примере с флажком легко построить примеры ситуаций, когда каждый из ответов будет правильным. В общем случае, совершенно правильную аналогию со шмотками я бы дополнил следующей фразой: если Вы живете в комнате вдвоем с супругой, две кучи "своих" вещей как правило будут удобнее, чем одна смешанная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 10:39 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
MelaniПростите. а как вы собираетесь заносить данные в таблицу связей + помечать нужные флажком?? это у вас получится?? Улыбайтесь чаще, людей это раздражает. Получится, это ведь несложно, в таблице будут строки: id1-id-T2 {T1.id1-T2.id} - id1 - из первой таблицы, id - из второй id1-id-T3 {T1.id1-T3.id} - id1 - из первой таблицы, id - из третьей id1-id-T3 {T1.id1-T3.id} - id1 - из первой таблицы, id - из третьей id1-id-T3 {T1.id1-T3.id} - id1 - из первой таблицы, id - из третьей id1-id-T2 {T1.id1-T2.id} - id1 - из первой таблицы, id - из второй Третье поле - это флажок, показывающий, какой таблице принадлежит id2: либо T2, либо T3 Но наверное я действительно в какую-то ерунду здесь полез... P.S. я вспомнил, почему задал этот вопрос - я где-то на форуме давно читал, что использование INNER JOIN для связки таблиц, вместо WHERE t1.id=t2.id замедляет выполнение запроса минимум в два раза. Меня это тогда поразило, так как считал, что это одно и то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 10:48 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
насколько я помню INNER в операторе Join указывает, что надо выбирать неповторяющиеся записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:17 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
если нужны таблички связей, то лучше делать их отдельно и независимо друг от друга. по-моему больше замороки с таблицей в которой есть значения из 2-х таблиц в одном поле + ещё флажок. ты замучаешься с такой организацией. Улыбайтесь чаще, людей это раздражает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:24 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Melaniнасколько я помню INNER в операторе Join указывает, что надо выбирать неповторяющиеся записи. Неповторяющиеся - это DISTINCT А INNER JOIN, как написано в справочниках, осуществляет полное объединение таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:28 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Melaniесли нужны таблички связей, то лучше делать их отдельно и независимо друг от друга. по-моему больше замороки с таблицей в которой есть значения из 2-х таблиц в одном поле + ещё флажок. ты замучаешься с такой организацией. Улыбайтесь чаще, людей это раздражает. Понятно... Спасибо. Буду разбирать тщательно собранные таблицы с флажками обратно)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:30 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
вот тебе и ответ - 2 разные кучи шмоток. одна твоя, другая твоей супруги. а живёте в одной комнате. ))) пример более, чем наглядный. Улыбайтесь чаще, людей это раздражает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:33 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Melaniвот тебе и ответ - 2 разные кучи шмоток. одна твоя, другая твоей супруги. а живёте в одной комнате. ))) пример более, чем наглядный. Улыбайтесь чаще, людей это раздражает. Ну что за пример... Я еще маленький, чтобы у меня была супруга. А кроме того - люди ведь не индексируют свои вещи)) А компьютер ведь может найти нужную запись из миллиона записей за десяток шагов)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:47 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEА кроме того - люди ведь не индексируют свои вещи)) Ошибаешься. Вещи в куче как раз хорошо проиндексированы, в небольшой куче эффективность как у хэш-индекса (увидел нужную - взял). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:51 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
softwarer AXAEА кроме того - люди ведь не индексируют свои вещи)) Ошибаешься. Вещи в куче как раз хорошо проиндексированы, в небольшой куче эффективность как у хэш-индекса (увидел нужную - взял). тем более какждая вещь уникальная и её ни с какой другой не спутаешь. на то он и пример, чтобы приводить его из реальной жизни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:53 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Поднятая тема не нова, но не мог бы автор озвучить предметную область ? Кажется, недавно я слушал подобный разговор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:55 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
softwarer AXAEА кроме того - люди ведь не индексируют свои вещи)) Ошибаешься. Вещи в куче как раз хорошо проиндексированы, в небольшой куче эффективность как у хэш-индекса (увидел нужную - взял). Это в маленькой, а у меня куча большая. Там выше пост, про то, что общая куча эффективна, пока она маленькая. А если куча большая - даже человек в сотне вещей будет перебирать практически все вещи по порядку, прежде чем найдет нужное - вот и нету индекса. Он ведь в куче не выбирает сначала все носки, потом все красные, потом левый. Он вроде схватит более или менее похожие носки, потом просмотрит их поочередно)) А вообще должен признаться, не знаю, как работают индексы. Нам показывали, как каким-то хитрым образом идет за четыре шага выборка одной записи из ста тысяч, но я пока не понял, как так получается(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:57 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
chronПоднятая тема не нова, но не мог бы автор озвучить предметную область ? Кажется, недавно я слушал подобный разговор. Предметная область - одна флажечная таблица или лучше несколько отдельных таблиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:58 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAE chronПоднятая тема не нова, но не мог бы автор озвучить предметную область ? Кажется, недавно я слушал подобный разговор. Предметная область - одна флажечная таблица или лучше несколько отдельных таблиц Под предметной областью имеют в виду прикладную задачу. Например: учет вещей в комнате (зверей в зоопарке/товара на складе). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 12:16 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Ginas AXAE chronПоднятая тема не нова, но не мог бы автор озвучить предметную область ? Кажется, недавно я слушал подобный разговор. Предметная область - одна флажечная таблица или лучше несколько отдельных таблиц Под предметной областью имеют в виду прикладную задачу. Например: учет вещей в комнате (зверей в зоопарке/товара на складе). У меня учет карт профосмотров... Карты пациентов, обследования на ней, атрибуты карты, атрибуты обследования, варианты заполнения атрибутов...(( Атрибуты карты и атрибуты обследования на карте, а так же варианты заполнения их - переплетаются. Я назвал сейчас две и еще две сущности - поэтому связок будет четыре... Поэтому разобью свою одну таблицу связок на четыре таблицы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 12:22 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEА если куча большая - даже человек в сотне вещей будет перебирать практически все вещи по порядку, Да ладно тебе. Он просто развалит ее по принципу половина-направо, половина-налево и снова увидит нужное :) Но именно поэтому начиная с определенного размера кучи человек раскладывает ее по полкам в шкафу (читай - по большему количеству тех же куч). Для малоселективных критериев (а твой флаг - из таких) партиционирование - один из вариантов эффективного выбора. А на тему "не понял" - я бы советовал всерьез разобраться прежде, чем начинать серьезно работать, а до тех пор, пока не разобрался - не пытаться думать о сложных вещах, делать "так как естественнее". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 12:23 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
softwarer AXAEА если куча большая - даже человек в сотне вещей будет перебирать практически все вещи по порядку, Да ладно тебе. Он просто развалит ее по принципу половина-направо, половина-налево и снова увидит нужное :) Но именно поэтому начиная с определенного размера кучи человек раскладывает ее по полкам в шкафу (читай - по большему количеству тех же куч). Для малоселективных критериев (а твой флаг - из таких) партиционирование - один из вариантов эффективного выбора. А на тему "не понял" - я бы советовал всерьез разобраться прежде, чем начинать серьезно работать, а до тех пор, пока не разобрался - не пытаться думать о сложных вещах, делать "так как естественнее". Да понятно... Но раз уж я взялся - работать надо(( Я делал "как естественней" - я запутался... Таблицы появляются как грибы по мере того, как появляются все новые и новые условия задачи.(( Просто здесь на предприятии никто до конца не может объяснить, что собственно надо от базы данных (причем упоминается, что сейчас одно, а завтра может быть другое), поэтому я трепыхаюсь с ее структурой... Я видел где-то здесь на форумах мысль, что таблицы с динамически изменяемым набором атрибутов не нужны, что если появляются такие мысли - предметная область не до конца определена. Я согласен с этим - если полностью определенная предметная область, то проблемы вряд ли могут быть - но считаю так: к сожалению то, что если предметная область до конца не определена - это не является уважительной причиной отказа от разработки... (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 12:30 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEНо раз уж я взялся - работать надо Безусловно. Хотя стоит оценить, по силам ли задача - пытаться "до последнего" поднять неподъемное тоже нехорошо. AXAEЯ делал "как естественней" - я запутался... Нормально. Но в таких ситуациях нужно быть очень аккуратным вот с какой точки зрения: если есть проблема, нужно искать, как ее "правильно" решить. Не так уж редко люди ради решения мелкой и несложной в общем-то проблемы принимают "глобально неверные" решения, закладывают глобальную кривизну. Об этом - о том, что каждую проблему нужно решать на своем уровне, не эскалировать ее - всегда нужно помнить. AXAEТаблицы появляются как грибы по мере того, как появляются все новые и новые условия задачи. Само по себе "как грибы" - нестрашно. Системы с десятками тысяч таблиц отлично работают (хотя их пишет как правило не один человек). Важно адекватно контролировать их, не создавать лишних и дублирующихся итп. AXAEПросто здесь на предприятии никто до конца не может объяснить, что собственно надо от базы данных (причем упоминается, что сейчас одно, а завтра может быть другое), поэтому я трепыхаюсь с ее структурой... Работа при определении требований на ходу - отдельная большая тема. Я бы посоветовал создать топик на эту тему в подходящем форме, например в "разработке ИС" - думаю, люди скажут очень много, в том числе и полезного, тема больная. В любом случае, главное - самому управлять процессом, не давать ему захлестывать, начинать управлять тобой. Задача решаема, две методики я могу назвать сходу, ну а вообще - читайте, оценивайте, и главное - старайтесь верно оценивать масштаб встающих проблем. То самое "как работать при меняющихся требованиях" - куда более важный вопрос, чем "сколько таблиц делать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 12:46 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34442254&tid=1544621]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
69ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 336ms |

| 0 / 0 |
