-
> Ega23 (15.12.2010 13:54:53) [53]
"Fields[Index] - это только если ты строго уверен, что НД пришёл в строго определённом порядке полей." Уверенность надо обретать в явном указание полей, а тогда можно и Fields[i]
-
> megavoid (15.12.2010 14:16:57) [57]
" и я просто не пропущу большой блоб." Не зарекайся. Кроме того все ты не проконтролируешь, на нормальных фирмах это разделено между разными людьми, и первому человеку совсем не обязательно знать, что админ добавил blob поле. Не его это дело, его дело писать правильные запросы, а не лениться. Молчу уж про параметры и оптимизатор.
-
> Уверенность надо обретать в явном указание полей, а тогда > можно и Fields[i] Ага, укажу я поля в запросе явно, а SQL обязан мне их в таком же порядке вернуть? Я уж лучше через .FieldByName. А то и вообще Ega23 придёт и порядок полей поменяет, а с fieldbyname мне это фиолетово.
-
> Куда "за"? Оно потому и внутри цикла, что я получаю данные из полей в цикле. за цикл, и не получение данных, а определение по имени. блин. что так сложно понять, до цикла определить поле и запомнить его в переменную, в цикле использовать ее.
> Прописал disable/enable. На глазок по скорости выполнения то же самое, но глазок не профайлер, вечером замерю без и с disablecontrols. на ста записях заметно не будет, вот сто тысяч... другое дело. + главный "тормоз" будет/есть не в нем а в стринггриде. и даже если ему поставить "дизебле" (там как то по другому называется) на обновления, это тоже будет мелочь по сравнению с тем как он сам по себе тормозит. "из принципа" (по логике с которой сделан)
-
> Ага, укажу я поля в запросе явно, а SQL обязан мне их в таком же порядке вернуть? да. хотя это и "всплыло" от не рекомендованного тут метода.
-
> В данном конкретном случае администратор БД управляется > мной же, и я просто не пропущу большой блоб. Когда это писалось, > я закладывался на полный контроль всего комплекса со стороны > меня, что и позволяет мне достаточно вольно писать мой говнокод, > точно помня что, где и как расположено.
Дык нету у тебя полного контроля при *, пойми. Полный контроль - когда ты чётко выбираешь именно те поля, которые тебе нужны. В том самом порядке, который тебе нужен. > Экономия, всё верно выше подметили. Над завести много датасетов > - подумаю.
Ты не на том экономишь. Если аналогию провести, то ты сейчас экономишь на мусорных пакетах, выбрасывая всё что есть в один, а потом на мусорке его разгребать и по разным контейнерам складывать: туда - пищевые отходы, туда - стекло всякое и т.д. Впрочем, это был ещё один совет. :))) > Прописал disable/enable. На глазок по скорости выполнения > то же самое, но глазок не профайлер, вечером замерю без > и с disablecontrols.
Может и не дать, тут очень многое зависит непосредственно от компонента. Надо реализацию смотреть. Но в целом - надо писать, это правило хорошего тона. > Там только ради WM_PAINT. Не 5, а 2-3 секунды :) WinSight > у меня частенько открыт. Ну, даже если придёт LBUTTONDOWN > или CLOSE - как это собьёт мне Query?
А ты возьми, зацепи окно мышкой и не отпускай. Потаскай его по экрану. Screen.Cursor := crSQLWait;
try
with DataSet do
begin
Open;
........
end;
finally
Screen.Cursor := crDefault;
end;
-
>>Кроме того все ты не проконтролируешь, на нормальных фирмах это разделено между разными людьми, и первому человеку совсем не обязательно знать, что админ добавил blob поле. Не зарекаюсь, но с 99.999% вероятностью на протяжении жизни этого проекта админ не будет трогать бд.
-
> Ага, укажу я поля в запросе явно, а SQL обязан мне их в > таком же порядке вернуть?
Естественно. Также, как и то, что сервер тебе произвольный порядок самих записей может выдать, если ты явно Order By не указал. На одинаковом запросе. > + главный "тормоз" будет/есть не в нем а в стринггриде. > и даже если ему поставить "дизебле" (там как то по другому > называется)
По всей видимости StringGrid1.Rows.BeginUpdate\EndUpdate проверять лениво.
-
> megavoid (15.12.2010 14:27:02) [62]
Ты даже не преставляешь как SQL работает, да именно обязан. Какой "Ega23 придёт и порядок полей поменяет" тебе порядок полей в твоей программе поменяет, окстись.
-
> sniknik (15.12.2010 14:28:03) [63]
На stringgrid можно много выиграть, очень медленный компонент.
-
> Не зарекаюсь, но с 99.999% вероятностью на протяжении жизни > этого проекта админ не будет трогать бд.
А ты не допускаешь мысли, что кроме данного проекта ты в своей жизни ещё и другими будешь заниматься? Где данное разделение будет в порядке вещей? Учись писать правильно с самого начала. Тебе не вредные советы дают, тут люди не один такой "кинозал" написали, а по десятку (если не больше).
-
> sniknik (15.12.2010 14:29:04) [64]
А я и не рекомендовал, просто указал, что и это надежный метод при правильном написание, а не при SELECT * В контексте необходимости явного указания полей.
-
> а не при SELECT *
А чё вы все DML-команды в UPPER CASE пишете? Это так, оффтопик...
-
> Ega23 (15.12.2010 14:29:05) [65]
Конечно рекомендации, ничего и другого в форуме не остается, ведь уволить то его за непрофессионализм мы не можем.
-
> megavoid (15.12.2010 14:32:06) [66]
Живо предание, я столько полей добавил в посторонние базы, они мне просто нужны, и что ты думаешь я оповещал разработчиков, правда и они на меня тоже плевали, поля типа bit собаки постоянно переделывают в shortint (у них "ошибка" в программах обновления). Вот так и боремся с друг другом.
-
> Ega23 (15.12.2010 14:42:12) [72]
Я пишу так как мне удобно, а удобно мне в Borland Pascal стиле. То есть каждое слово с большой буквы и без соокращений, кроме редких случаев. Я не боюсь много букав.
-
> поля типа bit собаки постоянно переделывают в shortint > (у них "ошибка" в программах обновления).
Ну дык. shortint в стандарте есть. bit - нету. :) Даже, ЕМНИП, byte (tinyint) нету.
-
> а удобно мне в Borland Pascal стиле.
Тогда почему SELECT, а не Select?
-
> А чё вы все DML-команды в UPPER CASE пишете? > Это так, оффтопик... ну сравни SELECT username,usertype,priority FROM sysusers WHERE username LIKE '%ix' select username,usertype,priority from sysusers whwere username like '%ix'
+ "Query Analyzer"/Access так генерит, т.е. можно считать стандарт.
-
Уж не один год пишу, много кинозалов получалось, какие-то хорошие, какие-то не очень. Ко всем советам стараюсь прислушиваться. Вот с базой - впервые у меня проект, отсюда много непониманий. За последние сутки узнал про SQL больше, чем за месяц чтения мануалов. Про * и поля понял, укажу их по порядку. Хотя админ НЕ будет их трогать.
Да, у грида beginupdate/endupdate, как и у listview. В listview выигрыш по скорости заметен на глаз уже при 500 записях. Кстати, при каком-то стиле listview ведёт себя как и датасет, тоже показывает и подгружает только то, что на экране.
|