Конференция "Базы" » [D2010] Магия мыши в TSQLQuery + DateTimePicker [MySQL]
 
  • Anatoly Podgoretsky © (15.12.10 14:22) [60]
    > Ega23  (15.12.2010 13:54:53)  [53]

    "Fields[Index] - это только если ты строго уверен, что НД пришёл в строго
    определённом порядке полей."

    Уверенность надо обретать в явном указание полей, а тогда можно и Fields[i]
  • Anatoly Podgoretsky © (15.12.10 14:26) [61]
    > megavoid  (15.12.2010 14:16:57)  [57]

    " и я просто не пропущу большой блоб."

    Не зарекайся. Кроме того все ты не проконтролируешь, на нормальных фирмах
    это разделено между разными людьми, и первому человеку совсем не обязательно
    знать, что админ добавил blob поле. Не его это дело, его дело писать
    правильные запросы, а не лениться. Молчу уж про параметры и оптимизатор.
  • megavoid © (15.12.10 14:27) [62]
    > Уверенность надо обретать в явном указание полей, а тогда
    > можно и Fields[i]

    Ага, укажу я поля в запросе явно, а SQL обязан мне их в таком же порядке вернуть? Я уж лучше через .FieldByName. А то и вообще Ega23 придёт и порядок полей поменяет, а с fieldbyname мне это фиолетово.
  • sniknik © (15.12.10 14:28) [63]
    > Куда "за"? Оно потому и внутри цикла, что я получаю данные из полей в цикле.
    за цикл, и не получение данных, а определение по имени. блин.
    что так сложно понять, до цикла определить поле и запомнить его в переменную, в цикле использовать ее.

    > Прописал disable/enable. На глазок по скорости выполнения то же самое, но глазок не профайлер, вечером замерю без и с disablecontrols.
    на ста записях заметно не будет, вот сто тысяч... другое дело. + главный "тормоз" будет/есть не в нем а в стринггриде. и даже если ему поставить "дизебле" (там как то по другому называется) на обновления, это тоже будет мелочь по сравнению с тем как он сам по себе тормозит. "из принципа" (по логике с которой сделан)
  • sniknik © (15.12.10 14:29) [64]
    > Ага, укажу я поля в запросе явно, а SQL обязан мне их в таком же порядке вернуть?
    да.
    хотя это и "всплыло" от не рекомендованного тут метода.
  • Ega23 © (15.12.10 14:29) [65]

    > В данном конкретном случае администратор БД управляется
    > мной же, и я просто не пропущу большой блоб. Когда это писалось,
    >  я закладывался на полный контроль всего комплекса со стороны
    > меня, что и позволяет мне достаточно вольно писать мой говнокод,
    >  точно помня что, где и как расположено.


    Дык нету у тебя полного контроля при *, пойми. Полный контроль - когда ты чётко выбираешь именно те поля, которые тебе нужны. В том самом порядке, который тебе нужен.


    > Экономия, всё верно выше подметили. Над завести много датасетов
    > - подумаю.


    Ты не на том экономишь. Если аналогию провести, то ты сейчас экономишь на мусорных пакетах, выбрасывая всё что есть в один, а потом на мусорке его разгребать и по разным контейнерам складывать: туда - пищевые отходы, туда - стекло всякое и т.д.
    Впрочем, это был ещё один совет. :)))


    > Прописал 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;

  • megavoid © (15.12.10 14:32) [66]
    >>Кроме того все ты не проконтролируешь, на нормальных фирмах это разделено между разными людьми, и первому человеку совсем не обязательно знать, что админ добавил blob поле.
    Не зарекаюсь, но с 99.999% вероятностью на протяжении жизни этого проекта админ не будет трогать бд.
  • Ega23 © (15.12.10 14:38) [67]

    > Ага, укажу я поля в запросе явно, а SQL обязан мне их в
    > таком же порядке вернуть?


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


    > + главный "тормоз" будет/есть не в нем а в стринггриде.
    > и даже если ему поставить "дизебле" (там как то по другому
    > называется)


    По всей видимости
    StringGrid1.Rows.BeginUpdate\EndUpdate


    проверять лениво.
  • Anatoly Podgoretsky © (15.12.10 14:38) [68]
    > megavoid  (15.12.2010 14:27:02)  [62]

    Ты даже не преставляешь как SQL работает, да именно обязан.
    Какой "Ega23 придёт и порядок полей поменяет" тебе порядок полей в твоей
    программе поменяет, окстись.
  • Anatoly Podgoretsky © (15.12.10 14:39) [69]
    > sniknik  (15.12.2010 14:28:03)  [63]

    На stringgrid можно много выиграть, очень медленный компонент.
  • Ega23 © (15.12.10 14:40) [70]

    > Не зарекаюсь, но с 99.999% вероятностью на протяжении жизни
    > этого проекта админ не будет трогать бд.


    А ты не допускаешь мысли, что кроме данного проекта ты в своей жизни ещё и другими будешь заниматься? Где данное разделение будет в порядке вещей?
    Учись писать правильно с самого начала. Тебе не вредные советы дают, тут люди не один такой "кинозал" написали, а по десятку (если не больше).
  • Anatoly Podgoretsky © (15.12.10 14:41) [71]
    > sniknik  (15.12.2010 14:29:04)  [64]

    А я и не рекомендовал, просто указал, что и это надежный метод при
    правильном написание, а не при SELECT *
    В контексте необходимости явного указания полей.
  • Ega23 © (15.12.10 14:42) [72]

    > а не при SELECT *


    А чё вы все DML-команды в UPPER CASE пишете?
    Это так, оффтопик...
  • Anatoly Podgoretsky © (15.12.10 14:42) [73]
    > Ega23  (15.12.2010 14:29:05)  [65]

    Конечно рекомендации, ничего и другого в форуме не остается, ведь уволить то
    его за непрофессионализм мы не можем.
  • Anatoly Podgoretsky © (15.12.10 14:45) [74]
    > megavoid  (15.12.2010 14:32:06)  [66]

    Живо предание, я столько полей добавил в посторонние базы, они мне просто
    нужны, и что ты думаешь я оповещал разработчиков, правда и они на меня тоже
    плевали, поля типа bit собаки постоянно переделывают в shortint (у них
    "ошибка" в программах обновления). Вот так и боремся с друг другом.
  • Anatoly Podgoretsky © (15.12.10 14:47) [75]
    > Ega23  (15.12.2010 14:42:12)  [72]

    Я пишу так как мне удобно, а удобно мне в Borland Pascal стиле. То есть
    каждое слово с большой буквы и без соокращений, кроме редких случаев. Я не
    боюсь много букав.
  • Ega23 © (15.12.10 14:47) [76]

    >  поля типа bit собаки постоянно переделывают в shortint
    > (у них "ошибка" в программах обновления).


    Ну дык. shortint в стандарте есть. bit - нету. :)
    Даже, ЕМНИП, byte (tinyint) нету.
  • Ega23 © (15.12.10 14:48) [77]

    >  а удобно мне в Borland Pascal стиле.


    Тогда почему SELECT, а не Select?
  • sniknik © (15.12.10 14:52) [78]
    > А чё вы все 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 так генерит, т.е. можно считать стандарт.
  • megavoid © (15.12.10 14:52) [79]
    Уж не один год пишу, много кинозалов получалось, какие-то хорошие, какие-то не очень. Ко всем советам стараюсь прислушиваться. Вот с базой - впервые у меня проект, отсюда много непониманий. За последние сутки узнал про SQL больше, чем за месяц чтения мануалов. Про * и поля понял, укажу их по порядку. Хотя админ НЕ будет их трогать.

    Да, у грида beginupdate/endupdate, как и у listview. В listview выигрыш по скорости заметен на глаз уже при 500 записях. Кстати, при каком-то стиле listview ведёт себя как и датасет, тоже показывает и подгружает только то, что на экране.
 
Конференция "Базы" » [D2010] Магия мыши в TSQLQuery + DateTimePicker [MySQL]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]