• Почему обрывается работа макроса в Excel?

    @Akina
    А что именно непонятно? Вот ссылаетесь Вы на Range, но напрямую через Workbook, у которого Range нет. Где есть Range? у Worksheet. С какого Worksheet будет браться этот Range? Скорее всего, с ActiveSheet... а что будет, если фокус переместится на другой Worksheet? а если не на Worksheet, а на Shape или Form? так что default property может плавать - а за ним и всё остальное.
  • Поставить индексы на каждое поле?

    @Akina
    Vadim Stepanenko,
    в таком случае лучше сделать 1 композитный индекс на title, categoryId, userId, isActive, isMarked, rating или один композитный на isActive и rating и одиночные на остальные столбцы?

    Скорее всего ни то ни другое.

    Чтобы индекс работал эффективно, у него должна быть высокая избирательность - по его выражению должно отбираться не более 5-7% записей от их общего числа в таблице, и чем меньше процент, тем лучше. Композит по isActive и rating к таковым явно не относится - разве что в качестве параметров будет передано isActive = FALSE при очень малом количестве неактивных записей и запредельное пороговое значение рейтинга. А поскольку скорее всего большинство запросов будут запрашивать активные записи (т.е. по этому полю считай избирательность будет все 99%) и более-менее вменяемый рейтинг (т.е. статистически 10-50%), то оптимизатор просто проигнорирует индекс - скан таблицы будет дешевле.

    Композитный же на всё подряд тоже не имеет смысла - индекс может (хотя не факт что будет) использоваться только если первые поля в его выражении используются для отбора по равенству. Т.е. если в отборе нет условия по первому полю title, то индекс не может использоваться в принципе, даже если есть отборы по всем остальным полям. Если в отборах есть все поля, кроме, например, userId, то из индекса может использоваться только префикс (title, categoryId). И т.п.
  • Поставить индексы на каждое поле?

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

    Когда пишется код, уже можно предсказать, какие запросы будут частыми, а какие критичны. То есть уже изначально есть некоторый материал для анализа и принятия решения. И формирования начального "минимального пака".

    а как вы потом из десятков тысяч разнотипных запросов будете этот самый мифический "минимальный пак" формировать?

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

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

    А если сервер наглухо повиснет, то я пойду и начищу репу тому придурку, который вместо покупки нормального сервера украл в музее старый пентиум-100.

    Чтобы повесить сервер БД не расчётной задачей, а каким-то сайтом под тестовой нагрузкой - это надо слишком сильно стараться.
  • Почему обрывается работа макроса в Excel?

    @Akina
    Rows - свойство объекта Range, который принадлежит Worksheet.

    Однако Вы ссылаетесь не на объект Worksheet, а на объект Workbook. У которого Range нет.

    его можно опустить и компилятор всё поймёт правильно. Это в моём понимании.

    Это в общем случае неверно. И компилятор тут не при чём. Вопрос интерпретации default property в рантайме, которая критичным образом зависит от текущего фокуса.

    В общем, указывайте абсолютно корректно - l_xxx.Worksheets("имя листа").Range("диапазон").Rows.Count.
  • Как оптимизировать запрос?

    @Akina
    Разделить на два запроса. В одном ps.sticker_id IN, в другом pi.plugin_id IN. И потом UNION их и ещё один GROUP BY.
  • Как правильно организовать получение списка данных с дополнительным полем - количество?

    @Akina
    Роман Юрьевич Ипатьев, а вот это уже целиком и полностью зависит от конкретного запроса. План надо смотреть.

    И нет, в общем случае от того, где COUNT OVER находится, в основном запросе или в CTE, скорость подсчёта никак не зависит. Зависит исключительно от того, как именно сервер собрался сортировать и подсчитывать. Есть, конечно, частные случаи, скажем, старые версии постгресса, которые в обязательном порядке материализуют CTE - понятно, что в этом случае подсчёт в запросе быстрее за счёт меньшего количества дисковых операций.
  • Почему обрывается работа макроса в Excel?

    @Akina
    Косячный код.
    Скажите, откуда будет браться l_xxx.Rows.Count? У книги такого свойства как Rows - тупо нет...
  • Как правильно организовать получение списка данных с дополнительным полем - количество?

    @Akina
    Хочется, чтобы этот запрос возвращал и количество данных всего - без offset и limit, но помещал их отдельно от массива элементов, можно ли как-то это сделать?
    Мне очень не хочется делать отдельный второй запрос на подсчет элементов.

    Если формализовать эту хотелку, то она будет звучать так: я хочу в одном запросе получить данные для различных уровней группировки. Что вряд ли является идеологически верным желанием (исключение - группирующий запрос с WITH ROLLUP). Так что я бы сказал, что выполнение отдельного запроса для получения количества записей - это правильное решение, а попытка всё запихать в один запрос - нет. Но выбор за Вами...
  • Как правильно организовать получение списка данных с дополнительным полем - количество?

    @Akina
    Роман Юрьевич Ипатьев, пардон, не до конца понял вопрос. Или не очень правильно его понимаю...

    COUNT() - функция детерминированная, даже в оконном варианте, так что итог её работы ну никак не может зависеть от реализации. Ни от диалекта, ни от версии, ни от иных факторов. Да и что может повлиять на подсчёт записей? сколько есть, столько и есть...

    Насчёт медленнее - в подавляющем большинстве случаев само по себе вычисление результата функции не должно зависеть от того, в CTE она или нет.
  • Почему не всегда срабатывает код?

    @Akina
    Контроль успешности операции? Это что, не совсем понимаю.

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

    Или вот например что будет, если User::find ничего не найдёт, или наоборот - найдёт больше одной записи? я лично фиг знает, ибо в ларавелях ноль - но приведёт ли это к ошибке кода и откату транзакции?
  • Почему не всегда срабатывает код?

    @Akina
    А где у Вас контроль успешности операции? не успешности выполнения программы, не успешность выполнения запроса, а именно выполнение операции запроса? Ведь иногда выполнение запроса с "нулевым" результатом - это не ошибка, а штатное событие...

    Включите General Log и отсмотрите по проблемным транзакциям, какие именно запросы поступали на сервер MySQL.
  • Почему не всегда срабатывает код?

    @Akina
    А где у Вас контроль успешности операции? не успешности выполнения программы, не успешность выполнения запроса, а именно выполнение операции запроса? Ведь иногда выполнение запроса с "нулевым" результатом - это не ошибка, а штатное событие...

    Включите General Log и отсмотрите по проблемным транзакциям, какие именно запросы поступали на сервер MySQL.
  • Какой вид инсерта быстрее?

    @Akina
    Один комплексный запрос быстрее пачки простых.
  • Как замаскировать внешний трафик под внутренний трафик?

    @Akina
    В какой схеме сети? В какой точке? От кого? И что именно замаскировать?
  • Как поочередно записать значения в полученную выборку?

    @Akina
    у меня есть текстовый список
    - текст 1
    - текст 2
    - текст 3

    Где и в каком формате есть этот список? Как именно в нём задаётся порядок? И почему порядок НИКАК не задаётся в запросе?
  • Выражение по умолчанию?

    @Akina
    Поле автоинкремента не требует наличия выражения по умолчанию.
    Я бы даже сказал - не допускает, ибо приведёт к ошибке "Invalid default value for column 'id'".
  • Запрос MySql. Как составить выборку из первой таблицы по нескольким параметрам из второй?

    @Akina
    IceNix, это выражение считает количество уникальных id_param для заданного param_table и проверяет, что оно равно количеству значений в списке (т.е. что каждое значение из списка присутствуент хотя бы в одном экземпляре).
  • Как использовать значение для IN, которые берутся с другой таблицы?

    @Akina
    Отношение много-ко-много (many-to-many, M:N) требует дополнительной связующей таблицы (junction table).
  • Как сравнить две строки из одной и той-же таблице без дополнительного join или from?

    @Akina
    Самый тривиальный WHERE EXISTS. При правильной индексации - достаточно быстрое и ненагрузочное решение.

    А ещё есть CTE. После которого self-join десяти строк - вообще ниачём.