SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.09.2010 18:13:53

namco0088
Участник
Зарегистрирован: 16.09.2010
Сообщений: 10

много столбцов или много строк

Здраствуйте
У меня к вам такой вопрос.....
какая структура таблиц быстрая....
когда у таблицы много столбцов или много строк....
например....

table_1
id | exam_no | math_answ | math_true | math_false | chem_answ | chem_true | chem_false | ...
--+---------+------------+-----------+------------+------------+-----------+------------+...
1 | 10         | ABCDE        | 1             | 4               | AABBC       | 4             | 1               |...
2 | 11         | AAACD        | 3             | 2               |CDDAB       | 3             | 2               |...


table_2
id  |exam_no | lesson | answer | true | false
---+--------+--------+-------+-----+--------
1   |10        | math    | ABCDE | 1     | 4
2   |10        | chem    | AABBC | 4     | 1
3   |11        | math    | AAACD | 3     | 2
4   |11        | chem    | CDDAB | 3     | 2

каждая таблица имеет более 1000 строк....

И так какая таблица оптимальная?
с какой таблицей работать будет удобнее?
И  какая таблица будет быстрая?

Неактивен

 

#2 18.09.2010 19:51:47

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: много столбцов или много строк

А чтобы вы ответили на вопрос: "Красный или большой сферический конь в вакууме будет удобней?" wink

В вашем случае выбор структуры зависит от того какие запросы вы собираетесь делать к таблице.

Неактивен

 

#3 19.09.2010 15:26:01

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: много столбцов или много строк

Но с точки зрения нормализации второй вариант лучше wink

Неактивен

 

#4 20.09.2010 09:53:23

namco0088
Участник
Зарегистрирован: 16.09.2010
Сообщений: 10

Re: много столбцов или много строк

ОК
но как задать запросы когда количество строк более 100.000 и сервер работал нормально

Неактивен

 

#5 20.09.2010 18:35:01

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: много столбцов или много строк

Так же, как и всегда?

Неактивен

 

#6 09.01.2012 18:26:29

Святослав
Участник
Зарегистрирован: 09.01.2012
Сообщений: 3

Re: много столбцов или много строк

И все-таки сори за некропостинг, но очень хотелось бы узнать.
У меня чем-то похожая ситуация.

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

Я вижу три варианта решения:
1. для каждого из таких параметров создавать отдельную таблицу в которой будет два стобца - id из главной таблицы и значение параметра.
минус этого варианта - куча таблиц (так как таких полей может быть довольно много) и последующий гемор их выборки
2. основную таблицу создать с минимум столбцов и вместе с ней создать вторую таблицу {id из главной страницы, название параметра, значение параметра}. таким образом все параметры, включая те, которые имеют по несколько значений будут находится в одной таблице.
3. сделать что-то среднее между 1 и 2 вариантом. в главной таблице оставить те параметры, у которых может быть только одно значение на строку. а те параметры у которых может быть несколько значений на строку вынести в отдельную таблицу (то есть одна таблица для всех параметров такого типа, а не как в первом случае на каждый параметр по таблице)

в общем мне больше всего нравятся 2 и 3 варианты, правда третий менее универсален, так как нужно делить параметры на две группы

но тут возникает вопрос, а если у меня допустим будет в главной таблице где-то 5 000 или вообще 10 000 строк, а в таблицах с параметрами соответственно раз так в 10-20 больше? какой вариант будет работать быстрее?
1 (основная таблица плюс до 10 дополнительных таблиц)
2 (основная таблица + одна дополнительная с 20 записями на каждую запись из основной таблицы)
3 (основная таблица + 1 таблица с 10 записями на каждую запись основной)

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

Неактивен

 

#7 10.01.2012 01:21:26

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: много столбцов или много строк

Если значения примитивные (т.е. информация о них - это только их набор, никаких дополнительных параметров хранить не нужно), есть еще четвертый вариант - использование типа данных SET: http://dev.mysql.com/doc/refman/5.5/en/set.html

Неактивен

 

#8 10.01.2012 13:15:33

Святослав
Участник
Зарегистрирован: 09.01.2012
Сообщений: 3

Re: много столбцов или много строк

о, за SET спасибо. это пригодится. Но часть параметров не будет иметь четких значений, так что придется еще использовать и те варианты о которых я писал...

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

Неактивен

 

#9 10.01.2012 18:22:50

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: много столбцов или много строк

Ну, в целом, нужно стремиться к нормализации таблиц (т.е. п. 1 - когда куча таблиц).
Насколько решение будет успешным - зависит от конкретных запросов, это уже надо проверять.
Если окажется, что много ресурсов тратится на JOIN (когда их много, например), тогда уже нужно проводить частичную денормализацию (т.е. дублировать данные, записывая их в основную таблицу в виде результата каких-то групповых операций).

В общем случае работать с максимально нормализованными таблицами удобнее.

Неактивен

 

#10 10.01.2012 21:01:41

Святослав
Участник
Зарегистрирован: 09.01.2012
Сообщений: 3

Re: много столбцов или много строк

ок. большое спасибо за помощь

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson