Есть огромная таблица table1: id tags 1 ,1,2,3, 2 ,41,26,3, 3 ,1,32,38, 4 ,51,2,3, 5 ,16,2,37, 6 ,17,28,3, 7 ,81,23,3, 8 ,91,12,35, 9 ,12,2,3, В поле tags хранятся перечисленные через запятую id Необходимо посчитать количество строк, где встречается tags = 1 например Сама схема работы на текущий момент следующая, есть несколько вложденных циклов. В первом цикле считается количество строк с LIKE '%,1,%', во втором количество строк с LIKE '%,2,%', и так далее. Циклов очень много. Без LIKE все моментально происходит, с LIKE зависает сервер. Есть альтернативные варианты? Примерный код: $ query = $ this->db->query("SELECT id FROM table1 ORDER BY order ASC"); foreach ($ query->result_array() as $ key => $ result1) { $ query = $ this->db->query("SELECT id FROM table2 WHERE id_table1='".$ result1['id']."' ORDER BY order ASC"); foreach ($ query->result_array() as $ key => $ result2) { $ query = $ this->db->query("SELECT id FROM table3 WHERE id_table2='".$ result2."' "); foreach ($ query->result_array() as $ key => $ result3) { $ query = $ this->db->query("SELECT count(id) as count_id FROM table4 WHERE tags LIKE '%,".$ result3['id'].",%' AND string1='0' AND string2='1' "); $ res = $ query->row_array(); if ($ res['count_id'] > 0) { echo 'OK'; } } } }