antonim
Новичок
упрощение запроса.
Помогите плз ускорить роиск в запросах:
1.
UPDATE series
SET name_series =
(SELECT second.name_series
FROM series first, series second
WHERE (char_length(second.name_series) > char_length(first.name_series)
OR char_length(second.name_series) = char_length(first.name_series))
AND series.id_series = second.id_series
AND second.id_series = first.id_series
AND second.data_add > first.data_add
)
WHERE id_series IN
(SELECT first.id_series
FROM series first, series second
WHERE (char_length(second.name_series) < char_length(first.name_series)
OR char_length(second.name_series) = char_length(first.name_series))
AND second.id_series = first.id_series
AND second.data_add > first.data_add)
Записей много и делает оч долго (несколько минут)
и к этому запросу нужно написать запрос удаляющий все записи с одинаковыми "id", но у которых second.data_add > first.data_add
пока в замешательстве как это сделать
2. Очень долго выполняется запрос поиска. Поиск производиться по большой базе, но вот думаю как же оптимизировать этот запрос:
Буду очень рад любой помощи.
Помогите плз ускорить роиск в запросах:
1.
UPDATE series
SET name_series =
(SELECT second.name_series
FROM series first, series second
WHERE (char_length(second.name_series) > char_length(first.name_series)
OR char_length(second.name_series) = char_length(first.name_series))
AND series.id_series = second.id_series
AND second.id_series = first.id_series
AND second.data_add > first.data_add
)
WHERE id_series IN
(SELECT first.id_series
FROM series first, series second
WHERE (char_length(second.name_series) < char_length(first.name_series)
OR char_length(second.name_series) = char_length(first.name_series))
AND second.id_series = first.id_series
AND second.data_add > first.data_add)
Записей много и делает оч долго (несколько минут)
и к этому запросу нужно написать запрос удаляющий все записи с одинаковыми "id", но у которых second.data_add > first.data_add
пока в замешательстве как это сделать
2. Очень долго выполняется запрос поиска. Поиск производиться по большой базе, но вот думаю как же оптимизировать этот запрос:
PHP:
$result = pg_query("
SELECT $slot
FROM book
WHERE (LOWER(name) LIKE LOWER('%$search%')
OR year::varchar LIKE LOWER('%$search%')
OR LOWER(ISBN) LIKE LOWER('%$search%'))
AND (my_book = 0)
ORDER BY name
LIMIT 10 OFFSET '$offset'
");