Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.14;
Скачать: CL | DM;

Вниз

Select * from - порядок полей   Найти похожие ветки 

 
Ega23 ©   (2008-05-20 12:19) [0]

А вот такой вопрос: ежели я делаю Select * from Table, то в каком порядке мне будут возвращены поля?
Т.е. может ли произойти ситуация, что порядок колонок поменялся, а реально изменения в структуру БД не вносились?


 
Reindeer Moss Eater ©   (2008-05-20 12:43) [1]

а это так важно?
а если структура поменялась, а в датасете статик поля уже есть?


 
Ega23 ©   (2008-05-20 13:03) [2]


> а если структура поменялась


Как раз это и проверяю. Просто иначе в проверке лишний цикл получается. А так - чисто по Fields[i].


 
Reindeer Moss Eater ©   (2008-05-20 13:09) [3]

я про то, что могут быть статик филды от дизайнтайма.
количество имена и типы полей в структуре таблицы не поменялись, поменялись только их порядковые индексы.
Либо наеборот. в физической таблице вообще ничего не менялось, но мышкой потаскали поля в редакторе полей.

лучше всего получать их по именам, а не по индексам.


 
Ega23 ©   (2008-05-20 13:12) [4]


> лучше всего получать их по именам, а не по индексам.


Да это понятно. Просто не хочется в описательную структуру имена вносить...
Хотя, щас подумал, без них один фиг не обойтись.

Ладно, вопрос снят.


 
MsGuns ©   (2008-05-20 15:25) [5]

>Ega23 ©   (20.05.08 13:12) [4]
>Хотя, щас подумал, без них один фиг не обойтись.

Однако обойтись. Если строить объектную модель БД


 
Anatoly Podgoretsky ©   (2008-05-20 15:31) [6]

> Ega23  (20.05.2008 12:19:00)  [0]

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


 
Reindeer Moss Eater ©   (2008-05-20 15:45) [7]

прямо так и увольнять.
99 полей в таблице и 3 поля созданных в редакторе полей в дизайне или явно на рантайме.
кому от этого будет плохо?


 
MsGuns ©   (2008-05-20 16:20) [8]

>Reindeer Moss Eater ©   (20.05.08 15:45) [7]
>99 полей в таблице

Вот за это уродство точно стрелять !


 
Anatoly Podgoretsky ©   (2008-05-20 16:32) [9]

> Reindeer Moss Eater  (20.05.2008 15:45:07)  [7]

Ну можно и не прямо, это же поговорка. Ну и что, что 99 полей, а кому сейчас легко? Хочешь что бы и серверу было плохо.
Для этого существуют псевдонаучные методы, называются Научная организация труда.
Ну нельзя так писать, звездочку можно использовать в отладке и только, иначе серверу хорошо не будет, звездочка заставляет каждый запрос анализировать с нуля, все планы побоку.


 
Anatoly Podgoretsky ©   (2008-05-20 16:33) [10]


> Вот за это уродство точно стрелять !

А я хотел только уволить, вот помните мою доброту.


 
Ega23 ©   (2008-05-20 16:36) [11]


> Ну нельзя так писать, звездочку можно использовать в отладке
> и только, иначе серверу хорошо не будет, звездочка заставляет
> каждый запрос анализировать с нуля, все планы побоку.


Мне нужно информацию по филдам получить, а не данные.
Соответственно, запрос будет выглядеть Select * from Table where 0=1


 
Ega23 ©   (2008-05-20 16:38) [12]

Т.е. я пустой НД получаю, но со структурой филдов и их типами. А дальше проверяю - так или не так.


 
Johnmen ©   (2008-05-20 16:53) [13]

Думается, будут идти в том порядке, в котором описаны в системной таблице.


 
Ega23 ©   (2008-05-20 16:57) [14]


> Думается, будут идти в том порядке, в котором описаны в
> системной таблице.


В общем, я тоже так думаю. Просто крайне интересно, по какому полю идёт OrderBy ?


 
Johnmen ©   (2008-05-20 17:01) [15]


> Ega23 ©   (20.05.08 16:57) [14]
>  Просто крайне интересно, по какому полю идёт OrderBy ?

Какой OrderBy??? :)


 
Reindeer Moss Eater ©   (2008-05-20 17:02) [16]

>99 полей в таблице

Вот за это уродство точно стрелять !


А что не так?


 
Reindeer Moss Eater ©   (2008-05-20 17:03) [17]

Кроме того, имелось ввиду совершенно иное, что вы не уловили.
физических полей N, филдов в датасете N.
N < M.

Используется звезда в запросе.
"Ну и чо"?


 
Reindeer Moss Eater ©   (2008-05-20 17:09) [18]

Мне нужно информацию по филдам получить, а не данные.
Соответственно, запрос будет выглядеть Select * from Table where 0=1


Ой бааалиииин...
select * from table без всяких where
+
FieldDefs.Update


 
Ega23 ©   (2008-05-20 17:30) [19]


> Ой бааалиииин...
> select * from table без всяких where
> +
> FieldDefs.Update


Гм... Пока не въехал, но чуть позже поэкспериментирую...


 
Ega23 ©   (2008-05-20 17:32) [20]


> Какой OrderBy??? :)


Такой. Описатели филдов в системной таблице хранятся? Хранятся. При составлении плана запроса оттуда выбираются? Выбираются. SQL при этом используется? А вот Х его З. Но если SQL - то Order By должОн быть.


 
Reindeer Moss Eater ©   (2008-05-20 17:39) [21]

Гм... Пока не въехал, но чуть позже поэкспериментирую...

FieldDefs.Update приводит к чтению метаданных с сервера и заполняет массив филддевсов экземплярами филддефов для каждого поля
с именами, типами явками и паролями.
данные при этом не фетчатся.


 
Ega23 ©   (2008-05-20 17:51) [22]


> FieldDefs.Update приводит к чтению метаданных с сервера
> и заполняет массив филддевсов экземплярами филддефов для
> каждого поля
> с именами, типами явками и паролями.
> данные при этом не фетчатся.


Ну, чай не совсем дурак, справку читать умею, да и в код слазил.  :)


 
MsGuns ©   (2008-05-20 18:28) [23]

>Reindeer Moss Eater ©   (20.05.08 17:02) [16]
>А что не так?

Все !

Представьте себе водительские права, в которых кроме ФИО, фотки и т.д., находится еще подробная биография, пионерские грамоты за учебу в школе, аттестат зрелости, медкарты с флюорокарточками, характеристики со всех мест, где работал и т.д.
Когда мне рассказывают о таблицах на 255 полей, я так и представляю себе веселую картинку, когда на требования гаишника предъявить права, водитель вытаскивает из багажника пару-тройку чемоданов с "данными".
Сколько работаю с базами, подобвых монстеров видел всего несколько раз и все они так или иначе родились от "гениальных" озарений их разработчиков запихивать ОДНОТИПНЫЕ данные в РАЗНЫЕ поля таблицы. Как пример, весьма часто встречающееся уродство из студпроектов, в которых все предметы, по которым есть оценки, запихиваются в одну запись с полями "Техмех", "Вышка", "Функанализ" и т.д. Ессно, для каждого курса (факультета, потока) свои "таблицы".
Вот учителей, которые учат ТАК делать, я б и поубивал. Насмерть !

И, наконец, одна аксиома - любой сервер прежде всего "точится" на оптимизацию поиска среди множества ЗАПИСЕЙ, но не ПОЛЕЙ !


 
MsGuns ©   (2008-05-20 18:30) [24]

>Ega23 ©   (20.05.08 17:32) [20]
>Описатели филдов в системной таблице хранятся? Хранятся. При >составлении плана запроса оттуда выбираются? Выбираются. SQL при этом >используется? А вот Х его З. Но если SQL - то Order By должОн быть.

Хранятся в той последовательности, в которой они были перечислены в соответствующем Create Table.
Странно, правда ?


 
Reindeer Moss Eater ©   (2008-05-20 18:37) [25]

У вас кругозор просто узок, если сложно представить сущность имеющую 99 атрибутов.

PS как я уже сказал, 99 - просто число взятое с потолка. В моих таблицах нет такого количества полей.
А суть поста, которую вы до сих пор не догнали, была в том, что статик филдов может быть три, в то время как физических полей таблицы будет триста три. И будет звезда в селекте и никому кроме вас печали от этого не будет.

фетча на клиента трехсот трех полей не состоится.


 
MsGuns ©   (2008-05-20 18:43) [26]

>Reindeer Moss Eater ©   (20.05.08 18:37) [25]
>У вас кругозор просто узок, если сложно представить сущность имеющую >99 атрибутов.

Дадад, я вот уже три десятка лет только телефонные справочники проектирую.

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

Более того, я вообще не догоняю, что такое "статик" поля. Это те, которые автоматически создаются при открытии в делфях например TTable и которые затем отображаются в окне редакторов полей ? Так я открою страшную тайну - у меня практически не бывает "статик" полей в твоем понимании (а если и есть, то это не поля таблицы, а поля возвращамого ХП или вьюхи датасета - надеюсь, ты в состоянии "догнать" между ними разницу ?)

Что касается самого "криминала", т.е. "политкорректности" использования конструкции Select *, то однозначного ответа быть не может, хотя в целом я бы скорее поддержал Анатолия, чем возражал бы ему.


 
Reindeer Moss Eater ©   (2008-05-20 18:45) [27]

Более того, я вообще не догоняю, что такое "статик" поля.

Тогда может погодить с тем чтобы спорить с пеной у рта и стрелять инакомыслящих?
Пока не прояснится что такое статик поля в датасете.


 
Reindeer Moss Eater ©   (2008-05-20 18:48) [28]

Пример с паспортом и правами содержащими грамоты из пионерлагеря за первое место на стометровке - это в детский сад такие примеры.

Я говорю про сущности имеюшие атрибуты зависящие только от PK.
И нигде не сказано, что если мсганс не видел их больше двадцати, то их и нет на самом деле и в принципе не может быть.


 
sniknik ©   (2008-05-20 18:51) [29]

> Т.е. я пустой НД получаю, но со структурой филдов и их типами. А дальше проверяю - так или не так.
правильнее информацию о структуре получать через OpenSchema.


 
MsGuns ©   (2008-05-20 19:00) [30]

>Reindeer Moss Eater ©   (20.05.08 18:48) [28]
>Я говорю про сущности имеюшие атрибуты зависящие только от PK.

 Глупости ! Ты говоришь не о сущностях, а о ПРЕДСТАВЛЕНИИ СУЩНОСТЕЙ в клиентском приложении. А это вовсе не одно и то же.

>И нигде не сказано, что если мсганс не видел их больше двадцати, то их и >нет на самом деле и в принципе не может быть.

Ты, конечно, можешь всю информацию об предмете автоматизации запихнуть в одну таблицу с 10000 полями. Трудно, но можно. Ветер, как говорится, вдогонку.


 
Reindeer Moss Eater ©   (2008-05-20 19:13) [31]

Да неважно о чем я говорю и как это называется на самом деле.
Могут быть атрибюты и их может быть 99.

Могут быть другие случаи.

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

первый во имя нормализации ничего кроме усложнения обработки данных  и лишних запросов не получит (плюс тормозов с этим связанных)
Второй ничего не потеряет.

впрочем мы отвлеклись.
конституция не ограничевает количество атрибутов у сущности и количество полей в таблице тоже.


 
Reindeer Moss Eater ©   (2008-05-20 19:18) [32]

Ты, конечно, можешь всю информацию об предмете автоматизации запихнуть в одну таблицу с 10000 полями. Трудно, но можно. Ветер, как говорится, вдогонку.

У кого такие психологические трудности с 10000 полями?
У меня их нет.
Так же как и с десятью таблицами по тысяче полей или сотней таблиц с сотней полей.


 
MsGuns ©   (2008-05-20 19:20) [33]

>А действительно опытный разработчик вполне может хранить все их скопом >в одном поле в той же таблице что и самого пионера.

Реально "грамотный" разработчик так делать в большинстве случаев не будет. Ибо знает, к чему это приведет.


 
Reindeer Moss Eater ©   (2008-05-20 19:20) [34]

И к чему же это приведет?


 
MsGuns ©   (2008-05-20 19:24) [35]

Напрмер, к потере 1-й степени нормализации - атомарности.
Хватит ?


 
Reindeer Moss Eater ©   (2008-05-20 20:29) [36]

И кому от этого худо?

Серверу, которого никто не будет лишний раз насиловать дополнительным запросом?

Разработчику? Который получает все "грамоты садика" одним запросом вместе с самим пионером и не организует циклы на клиенте после получения их списка с сервера?

Никому.


 
Reindeer Moss Eater ©   (2008-05-20 20:31) [37]

Я уже не говорю про случай, когда по условиям предметной области все эти многочисленные грамоты вообще логически являются атомарными. Все целиком вместе взятые.


 
MsGuns ©   (2008-05-20 20:44) [38]

"Я не буду с тобою спорить, старый софист" (c) ;)


 
Anatoly Podgoretsky ©   (2008-05-20 21:13) [39]

> Ega23  (20.05.2008 16:38:12)  [12]

А чего ни будь приличное использовать не хочешь, например OpenScheme


 
Anatoly Podgoretsky ©   (2008-05-20 21:20) [40]

> Ega23  (20.05.2008 17:32:20)  [20]

Не обязан, если мне порядок не важен, то зачем мне заставлять делать сервер лишнею работу.



Страницы: 1 2 вся ветка

Текущий архив: 2008.12.14;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.017 c
15-1223957719
Slider007
2008-10-14 08:15
2008.12.14
С днем рождения ! 14 октября 2008 вторник


2-1225225724
Fedorovich
2008-10-28 23:28
2008.12.14
Unicode в Дельфи


15-1223198751
DevilDevil
2008-10-05 13:25
2008.12.14
Windows долго грузится. CPU - пару процентов


15-1223560915
Tricky_
2008-10-09 18:01
2008.12.14
Биоритмы


2-1225878144
demon
2008-11-05 12:42
2008.12.14
Как убрать заголовок формы?