0 / 0 / 1
Регистрация: 27.10.2013
Сообщений: 44
|
|
1 | |
Как оптимизировать запросы к БД14.07.2014, 00:55. Показов 933. Ответов 12
Метки нет (Все метки)
Есть таблица с огромным количеством столбцов .. около 400 условно можно обозначить которые как характеристики товара. товаров в таблице тоесть строк ну пусть будет 500 и в будущем будет увеличиваться.
в ячейках таблицы хранится информация о товаре , и в основном она = 0 и не нужна ... но запрос идет по айди и получается вынимает все 400 значений так как не известно в каких именно ячейках данного товара информация актуальна ... запрос делается в цыкле который выполняется от 1 до 35 раз запрашивая информацию об етих всех товарах .. в зависимости сколько их должно появится .. е если 2-3 товара то еше норм ... а если больше то оно все ощутимо начинает виснуть .. а если ети запросы будут делать одновременно 10-100 человек .. так все умрет ... КАК ОПТИМИЗИРОВАТЬ ЕТО ВСЕ ? ?
0
|
14.07.2014, 00:55 | |
Ответы с готовыми решениями:
12
Как оптимизировать sql запросы? Оптимизировать вложенные запросы Оптимизировать запросы на добавление прайса Как в Access объединить запросы в один или вывести эти запросы в одном отчете и рассчитать по ним коэффициент? |
368 / 406 / 165
Регистрация: 29.05.2014
Сообщений: 1,494
|
|
14.07.2014, 01:07 | 2 |
А где код? Структура БД?
А то есть [ссылка на форум] для таких вопросов...
0
|
0 / 0 / 1
Регистрация: 27.10.2013
Сообщений: 44
|
||||||
14.07.2014, 01:22 [ТС] | 4 | |||||
та какой код ? обычный селект запрос в цикле запрашивает 400 ячеек из базы .. все тупит .. 10 человек одновременно зайдут на страницу с циклом и все умрет .. как упростить ето все ? может не в базе хранить а в текстовом , или ексель .. или может не 400 вынимать из базы а как-то определять только нужные .. или хз ..
Хочешь код ?? ну на код
они все нужны .. ну у одного предмета одни столбцы актуальны а у второго другие ... к примеру у одного предмета нужено значение 200 столбца .. а у второго 200 ,201 , 202.. П.С. ну я утрирую что 400 .. но много больше 200 Добавлено через 2 минуты может не в базе ето все хранить ?? Добавлено через 3 минуты или как то по смромнее ето все хранить ? слышал что то про JSON но не знаю для чего оно ...
0
|
368 / 406 / 165
Регистрация: 29.05.2014
Сообщений: 1,494
|
|
14.07.2014, 01:24 | 5 |
Ну спасибо, это одолжение? ваше величество забыло про структуру БД
По существу это писец. Зачем запрос внутри цикла?
0
|
14.07.2014, 01:26 | 6 |
Скажем так, что параметры можно хранить в одном текстовом поле в виде {"type":"box","color":"red"}
Разумеется, нужно изменить код обработчика. Но тогда невозможно будет отсортировать товары по полям (я имею в виду непосредственно в запросе), например, по типу, по цвету и пр. Тут ты должен сам уточнить приоритеты свойств. О, а я то и не заметил запросы внутри цикла. Поэтому и нагрузка получается.
0
|
0 / 0 / 1
Регистрация: 27.10.2013
Сообщений: 44
|
|
14.07.2014, 01:33 [ТС] | 7 |
А как делать запрос ? вне цикла ? если один раз нужно информацию по 10 предметов .. а второй раз про 1 предмет .. а третий раз про 30 предметов .. а четвертый вообще ниодного ?
Добавлено через 1 минуту параметр представляет собой несколько чисел .. и так в 95% ячейках Добавлено через 1 минуту то лучще хранить их и 1 текстовом поле ? .. и вынимать как текст .. а как потом разобратся чтоб работать с етими значениями ?
0
|
0 / 0 / 1
Регистрация: 27.10.2013
Сообщений: 44
|
|
14.07.2014, 01:41 [ТС] | 9 |
ето левый код .. я как пример привел .. чтоб не искать именно тот который сейчас работает
0
|
14.07.2014, 01:42 | 10 |
А если нужно выбрать массив адресов, то одним запросом 'SELECT * FROM predmetu WHERE id_predmeta_bazar IN(массив);
И сразу получишь выборку сколько нужно, а потом делаешь обход и работаешь с каждой записью.
0
|
0 / 0 / 1
Регистрация: 27.10.2013
Сообщений: 44
|
|
14.07.2014, 01:49 [ТС] | 11 |
та как ? лучше все хранить в 1 текстовом поле ?? .. а как потом сортировать значения етого поля и определить все елементы ? и кпримеру просумировать 155 елемент первого предмета с 155 елементом второго третьего предмета
Добавлено через 6 минут ага тоесть лучше делать 1 запрос нужных предметов .. и потом цыклом их переберать да ?
0
|
14.07.2014, 02:02 | 12 | ||||||||||||||||||||
Сообщение было отмечено G-leb как решение
Решение
если хранить по типу JSON, в поле params, то
А вообще-то не заморачивайся с JSON, а то еще больше запутаешься.
1
|
0 / 0 / 1
Регистрация: 27.10.2013
Сообщений: 44
|
|
14.07.2014, 18:16 [ТС] | 13 |
спасибо буду тестить
0
|
14.07.2014, 18:16 | |
14.07.2014, 18:16 | |
Помогаю со студенческими работами здесь
13
Как можно продиагностировать DNS запросы, включая обращения к кэшу, и сами запросы от DNS клиента к серверу? как оптимизировать Как оптимизировать? PictureBox, как убрать задержку, как оптимизировать код? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |