SELECT * FROM table или SELECT field1, field2..
5 отговора
981 прегледа
SELECT * FROM table или SELECT field1, field2..
Здравейте,
интересува ме има ли разлика в скоростта при долните заявки,
db - mysql
случай 1)
= SELECT * FROM table или
= SELECT field1, field2, fieldN FROM table
случай 2)
= SELECT t1.*, t2.* FROM table1 t1, table2 t2 WHERE t1.id = t2.id или
= SELECT t1.field1, t1.field2..., t2.field1, t2.field2... FROM table1 t1, table2 t2 WHERE t1.id = t2.id
интересува ме има ли разлика в скоростта при долните заявки,
db - mysql
случай 1)
= SELECT * FROM table или
= SELECT field1, field2, fieldN FROM table
случай 2)
= SELECT t1.*, t2.* FROM table1 t1, table2 t2 WHERE t1.id = t2.id или
= SELECT t1.field1, t1.field2..., t2.field1, t2.field2... FROM table1 t1, table2 t2 WHERE t1.id = t2.id
Re: SELECT * FROM table или SELECT field1, field2..
Зависи как е написана базата... по принцип може да има малко разлика в скоростта на интерпретиране на израза (заявката)
Re: В скоростта няма разлика. Обаче ...
По отношение на бързодайствието няма никаков значение дали изписваш всички колонки или *
Има голямо значение от гледна точка на дизайн, разработка, поддържане ...
Звездичката е лошо нещо защото "крие" структурата. Достатъчно е да погледнем твоя пример:
= SELECT * FROM table или
= SELECT field1, field2, fieldN FROM table
Въпрос 1: Колко колонки ще съдържат резултатите от тези заявки?
При втората е ясно - 3. А първата?
Въпрос 2: Какви колонки ще съдържат резултатите от тези заявки?
А в какъв ред?
Явното указване на колонките добавя едно ниво на абстракция от което има само полза. Може по някаква причина да се добавят или махнат колонки или пък да се пренаредят. А тогава всички програми коите използват SELECT * трябва да се пренаписват ...
salle.online.bg/sig
Има голямо значение от гледна точка на дизайн, разработка, поддържане ...
Звездичката е лошо нещо защото "крие" структурата. Достатъчно е да погледнем твоя пример:
= SELECT * FROM table или
= SELECT field1, field2, fieldN FROM table
Въпрос 1: Колко колонки ще съдържат резултатите от тези заявки?
При втората е ясно - 3. А първата?
Въпрос 2: Какви колонки ще съдържат резултатите от тези заявки?
А в какъв ред?
Явното указване на колонките добавя едно ниво на абстракция от което има само полза. Може по някаква причина да се добавят или махнат колонки или пък да се пренаредят. А тогава всички програми коите използват SELECT * трябва да се пренаписват ...
salle.online.bg/sig
Re: SELECT * FROM table или SELECT field1, field2..
Струва ми се, че заявката със * би трябвало да е маааалко по-бърза, тъй като броят на дисковите премествания (disk seeks) е по-малък, но пък изискваш заемането на повече излишна памет. Обаче разликата в скоростите вероятно е толкова малка, че не си струва да пишеш такива "объркващи" заявки - добрият стил изисква да "питаш" базата точно за това, което ти трябва. Дори и да ти трябват всички полета от даден ред, пак е по-добре да ги изредиш едно по едно, отколкото със *.
Everything louder than everything else...
Everything louder than everything else...
Re: SELECT * FROM table или SELECT field1, field2..
А на мен ми се струва, че трябва преди да се селектнат данните, да се изчетат всички полета (имената им), което пък забавя малко.
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Re: SELECT * FROM table или SELECT field1, field2.
root@ro6avia#chmod +x /bin/seek_and_destroy