Вообще структура таблицы очень странная, я бы integer_N и остальные такие же вынес в массивы. И у вас синтаксис таблицы устаревший, замените на актуальный с PARTITION и ORDER
Согласен — это legacy-кусок, который в следующем квартале будет переписываться и актуализироваться. Но пока надо как-то с этим дожить. Такое странное поведение только при добавлении поля phone. С любым другим — всё нормально. Более того, если сделать SELECT phone FROM shop_clients <…> — то тоже всё корректно отрабатывает -- возвращает 594 строки. Еще из удивительного, если удалить одно из условий, то тоже нормально отрабатывает: SELECT id, phone FROM shop_clients WHERE (integer_2 != toInt32(1737)) AND (integer_2 != toInt32(1761)) AND (integer_2 != toInt32(1762)) AND (integer_2 != toInt32(1736)) AND (integer_2 != toInt32(1763)) AND (integer_2 != toInt32(1787)) AND (integer_2 != toInt32(1788)) AND (integer_30 = toInt32(1)) AND (integer_9 = toInt32(30)) AND (region_id IN (toInt32(1), toInt32(2), toInt32(3), toInt32(4), toInt32(5), toInt32(6), toInt32(7), toInt32(8), toInt32(9), toInt32(10), toInt32(11))); 594 rows in set. Elapsed: 0.042 sec. Processed 1.88 million rows, 37.63 MB (44.87 million rows/s., 897.73 MB/s.) SELECT id, phone FROM shop_clients WHERE (integer_2 != toInt32(1737)) AND (integer_2 != toInt32(1761)) AND (integer_2 != toInt32(1762)) AND (integer_2 != toInt32(1736)) AND (integer_2 != toInt32(1763)) AND (integer_2 != toInt32(1787)) AND (integer_2 != toInt32(1788)) AND (integer_30 = toInt32(1)) AND (integer_9 = toInt32(30)) AND (region_id IN (toInt32(1), toInt32(2), toInt32(3), toInt32(4), toInt32(5), toInt32(6), toInt32(7), toInt32(8), toInt32(9), toInt32(10), toInt32(11))) AND (shop_clients.is_deleted != ‘Y’); 840948 rows in set. Elapsed: 0.204 sec. Processed 1.88 million rows, 81.63 MB (9.21 million rows/s., 399.63 MB/s.)
Обсуждают сегодня