|
 270 Кб |
|
| Есть база данных с результатами тестирования школьников. Она имеет в своем составе несколько таблиц. Главная это result. В ней в числовом виде содержатся ответы на вопросы теста. есть связаные с главной таблицы, в которых содержится текст ответа. Необходимо выбрать информацию в текстовом виде, т.е из связаных таблиц. Использую phpmyadmin. сначала думал что это из за индексов создал их но ни капельки не помогло((((есть мысль что индексы созданы неправильные
Запрос тормозит жутко, я новичок поэтому не пойму в чем дело, помогите пожалуйста. | |
|
|
|
|
|
|
|
для: bigmak
(13.06.2009 в 16:33)
| | Добрый день.
* Для чего производится запрос из таблицы: для распечатывания информации или для размещения на сайте?
* Действительно, запрос растянувшийся на 3 страницы word'a будет долго обрабатываться.
Вся загвоздка в том, что для меня, например, непонятно с какой целью выполняется такой запрос. Наверное проще в таблицу первым столбцом занести Ф.И.О., а затем все остальные столбцы. И тогда для вывода информации потребуется запрос типа:
И если обработать этот запрос, то он будет иметь следующий вид:
Иванов
1 - 2
2 - 4
3 - 2
... и т.д.
Петров
...и т.д.
Таким образом, массив данных можно вывести на web - страницу или сохранить в файле с последующей печатью.
P.S.: обозначте цели создания приложения. | |
|
|
|
|
|
|
|
для: Rolex
(13.06.2009 в 18:57)
| | Здравствуйте! спасибо что ответили. Цель приложения организация поиска. Его результаты выводятся на сайт.что касается таблицы result то в ней то и содержится фамилия, имя и числовое представление ответов на вопросы(просто в скриншот я не поместил этого), а нужно ыводить текстовое из связаных таблиц поэтому то запрос и такой громадный, а впрочем я новичок поэтому не очень разбираюсь в специфике, но мне кажется странным когда из базы данных (таблица result содержит 8 записей) эта выборка производится за 30 и более секунд | |
|
|
|
|
|
|
|
для: bigmak
(13.06.2009 в 16:33)
| | Вы бы привели чтоли дамп БД , а не обрывки картинок....
Если таблица растянута в горизонталь, как это у Вас выглядит - это является главным источником проблем. Так таблицы не проектируют. | |
|
|
|
|
|
|
|
для: Trianon
(13.06.2009 в 21:41)
| | )))Я извиняюсь, но что такое дамп и что означает в горизонтали. просто я в базах данных без году неделя)) | |
|
|
|
|
 4.8 Кб |
|
|
для: BIGMAK
(13.06.2009 в 22:02)
| | Прошу прощение за свой дилетантизм. Дамп базы и запрос к вашим услугам. Подскажите, почему же запрос так тормозит (но я конечно еще сильнее торможу))))) | |
|
|
|
|
|
|
|
для: BIGMAK
(13.06.2009 в 22:26)
| | Необходимо посмотреть код приложения, а может быть и пересмотреть. | |
|
|
|
|
|
|
|
для: BIGMAK
(13.06.2009 в 22:26)
| |
`2.1_math` tinyint(1) default NULL COMMENT 'оценка цифрой,если 0 то нет такого предмета',
`2.1_phisics` tinyint(1) default NULL,
`2.1_informat` tinyint(1) default NULL,
`2.1_him` tinyint(1) default NULL,
`2.1_bio` tinyint(1) default NULL,
`2.1_gegrafy` tinyint(1) default NULL,
`2.1_russian` tinyint(1) default NULL,
`2.1_liter` tinyint(1) default NULL,
`2.1_inostr` tinyint(1) default NULL,
`2.1_history` tinyint(1) default NULL,
`2.1_obshestvo` tinyint(1) default NULL,
`2.1_pravo` tinyint(1) default NULL,
`2.1_cherchenie` tinyint(1) default NULL,
`2.1_mir kyltyra` tinyint(1) default NULL,
`2.1_tehnologia` tinyint(1) default NULL,
`2.1_fizkyltyra` tinyint(1) default NULL,
|
вот таких фрагментов в структурах таблиц быть не должно:
Получается так, что добавление очередного параметра приводит к росту таблицы в ширину ( а не в высоту) . Это я и назвал растягиванием по горизонтали.
Кстати, бешеное количество таблиц с расшифровкой ответов (те что с цифровыми названиями) тоже подтверждает диагноз. В аккуратно спроектированной схеме все эти описания ответов жили бы в одной таблице, т.к. являются одним и тем же прикладным типом данных. | |
|
|
|
|
|
|
|
для: Trianon
(15.06.2009 в 10:18)
| | Если вас не затруднит подскажите как правильнее это организовать | |
|
|
|
|
|
|
|
для: BIGMAK
(15.06.2009 в 18:56)
| | например так.
таблица пользователей users(id, login, name, regdate....)
таблица тестов tests(id, name, description, creationdate)
таблица вопросов тестов qtns(id, test_id, qtn_text, mode(num, text, enum, set))
таблица вариантов ответов на вопрос vars(id, var_text, qtn_id)
// qtn_id задается при однозначной принадлежности.
таблица соответствия вариантов ответов вопросам qtn_var(id_qtn, id_var, seq)
// строки описывают множественную принадлежность вариантов ответов вопросам
таблица прохождения тестов exam(user_id, test_id, exam_date, elapsed_time)
таблица ответов answer(exam_id, qtn_id, var_id, extra)
// последнее поле при произвольном ответе
|
| |
|
|
|
|
|
|
|
для: Trianon
(15.06.2009 в 19:49)
| | Большое спасибо.Очень помогли | |
|
|
|