Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Требуется совет по реорганизации таблицы

Сообщения:  [1-5] 

 
 автор: SergeZ   (04.05.2006 в 17:21)   письмо автору
 
   для: solenko   (04.05.2006 в 17:05)
 

Ну что ж буду пробовать. Спасибо за консультацию и советы.

   
 
 автор: solenko   (04.05.2006 в 17:05)   письмо автору
 
   для: SergeZ   (04.05.2006 в 15:00)
 

самому стало интерестно как поведет себя MySQL с таким количеством записей :)
Вот решил прочести небольшой эксперимент... Правда несколько уменшил кол-во записей (c 50*10^6 до 10*10^6), но и у меня машина под разряд серверов не очень подходит (Athlon 1300 256Mb ОЗУ)

mysql> show fields from items;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| title | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.03 sec)

mysql> select count(id) from items;
+-----------+
| count(id) |
+-----------+
| 10332 |
+-----------+
1 row in set (0.00 sec)

mysql> show fields from details;
+---------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| item_id | int(11) | YES | | NULL | |
| f_time | datetime | YES | | NULL | |
| val1 | int(11) | YES | | NULL | |
| val3 | int(11) | YES | | NULL | |
+---------+----------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> select count(id) from details;
+-----------+
| count(id) |
+-----------+
| 10331062 |
+-----------+
1 row in set (0.00 sec)


mysql> select sum(val1)/sum(val3) from details, items where details.item_id = items.id and items.id > 100
-> ;
+---------------------+
| sum(val1)/sum(val3) |
+---------------------+
| 1.00 |
+---------------------+
1 row in set (20.10 sec)

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

http://finnam.blogspot.com/2005/09/blog-post_29.html -- это по поводу более профессиональных тестов :)

   
 
 автор: SergeZ   (04.05.2006 в 15:00)   письмо автору
 
   для: solenko   (04.05.2006 в 14:35)
 

А это ничего, что во второй таблице будет такое огоромное чило записей, в теории при указанных значениях это количество будет 999*50000 ?
Я понимаю что вторая таблица будет максимально простой, но количество записей - пугает.

   
 
 автор: solenko   (04.05.2006 в 14:35)   письмо автору
 
   для: SergeZ   (04.05.2006 в 14:21)
 

table_1
id int auto_increment,
articul char(5), #можно и int, но только еслиесть уверенность, что в артикуле будут только числа
title varchar(255),
primary key (id)

table_2
id int auto_increment,
table_1_id int not null references table_1(id),
time datetime,
val1 int,
val2 int,
primary key (id)

   
 
 автор: SergeZ   (04.05.2006 в 14:21)   письмо автору
 
 

Подскажите как изменить структуру хранения данных - изменить таблицу - разбить на несколько например:

Итак:
Есть таблица вот такой примерно структуры

Столбцы :
артикул - число от 0 до 99999
title - varchar 255
time1 varchar 7
time2 varchar 7
time3 varchar 7
.....
time999 varchar 7

Все столбцы time... хранят значение xxx|yyy - два целых числа, разделенные знаком |, либо значение по умолчанию |

В этой таблице порядка 50000 записей
То есть получается таблица на 50000 записей( примерно ) и около 1000 столбцов

Названия столбцов только не такие как указано выше, а десятизначные целые числа типа 1146678478, соответствующие моменту их создания.

Как лучше изменить эту таблицу? Что бы уменьшить

1)- память ею занимаемую,
2) - увеличить производительность работы

Что делается обычно с таблицей.
1) Удаляется самый старый столбец , добавляется новый - соответствующий текущему моменту и
для каждого значения артикул вставляется текущее значение xxx|yyy по этому артикулу на данный момент времени
2) поиск по полю title и выдача данных для найденных артикулов в виде графика по значениям xxx|yyy для разных значений
времени

   

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования