SearchEngines.bg

Това е примерно съобщение за гост. Регистрирайте безплатен акаунт днес, за да станете потребител на SearchEngines.bg! След като влезете, ще можете да участвате в този сайт, като добавите свои собствени теми и публикации, както и да се свържете с други членове чрез вашата лична входяща кутия! Благодарим ви!

Сравнения на заявки към БД

ted

New member
Един въпрос към колегите с по-голям опит с бази данни - MySQL в случая.
Трябва да извадя информация за параметри които са в 6 различни таблици.
Кой начин ще натовари по-малко сървъра от гледна точка на използваното сървърно време:

Вариант 1 - 6 последователни заявки към всяка таблица
Вариант 2 - една заявка към всички таблици с LEFT JOIN
Вариант 3 - нещо друго което не знам ...

Благодаря.
 
Re: Сравнения на заявки към БД

с LEFT JOIN трябва да по - добре. НО, винаги има едно НО :), всичко зависи от това до колко добре ти е моделирана базата и с правилно конструирана WHERE клауза трябва да станат добре нещата.
 
Re: Сравнения на заявки към БД

Ако таблиците са големи като брой редове в тях не е ясно дали е добре да правиш LEFT JOIN

Моя съвет е да си напишеш заевките в няколкото различни случая, да има сложиш по едно:SQL_NO_CACHE както следва:

select SQL_NO_CACHE ......

и да премериш времето за изпъление няколко пъти (примерно 10-на пъти)

Сравнявай и преценяй. Имай предвид и че статистиката ти ще е меного относителна предвид различното натоварване на сървъра, но все пак е нщо
 
Re: Сравнения на заявки към БД

Ако таблиците са големи като брой редове в тях не е ясно дали е добре да правиш LEFT JOIN

както казах съчетано с добър where по правилни полета с добра структура на базата 100% е по добре от 5 по малки заявки и обработка в скрипта после.
Защо добър where ? защото заявката се изпълнява на обратно първо се махар редовете които не съотвестват и тн.
 
Re: Сравнения на заявки към БД

Зависи каква е заявката може и да не можеш да изкараш с една заявка всичко необходимо от толкава таблици в един ред. Ако трябва да ползваш агрегатни функции за да ги обединиш вероятно ще е по бързо да си ги викаш поотделно. Относно MySQL конкретно по добре прост джоин(произведение) отколкото ляв (1 ред нали така) ... по исторически причини.

Накратко най важното ти е да имаш правилните индекси и правилно построена where клауза. Но пак повтарям - зависи си от заявката.
 
Re: Сравнения на заявки към БД

left join... нали трябва да има по нещо да ги свържеш, ако искаш с една заявка може да се наложи и union ако има изобщо такова чудо в mysql, ако искаш опиши структурата за да можем да помогнем
 
Re: Сравнения на заявки към БД

нали трябва да има по нещо да ги свържеш
Във всяка таблица си има IDто на обекта за който са съответните параметри.

Ще пробвам и предложението на kuzmanin за тестване на времето на двата варианта. Утре ще пиша за резултата.

Благодаря на всички за мненията.
 
Re: Сравнения на заявки към БД

ако са малко записите може и с отделни заявки, ако са повече е добре с join, и е добре да имаш индекси по id-то на обекта. Интересно ми е защо данните са в 6 таблици и дали и как е нормализирана тази база
 
Re: Сравнения на заявки към БД

Правя каталог в който различните обекти са представени с общо 56 параметъра и в който на този етап ще има около 3-4 000 записа.

Реших да групирам параметрите в различни таблици - реално ще имам сортиране и търсене по параметри които са в една по-малка таблица а всички данни от 6те таблици ще вадя само при разглеждането на детайлната информация за съответния обект.

Това си беше някаква моя логика до която достигнах разглеждайки кода и структурата на различни готови системи - форумите например ... може и да не е най-добрия подход ...
 
Re: Сравнения на заявки към БД

3-4 000 записа са нищо работа и както и да омажеш нещата пак ще работи бързо.
При голям обем на данни базати ти трябва да са изградени спрямо заявките.
 

Горе