2013-06-17 3 views
3

Я хочу удалить несколько строк из секционированной таблицы базы данных, но этот запрос не будет работать:Как удалить строки выборочно из базы данных с разделением kdb?

delete from myPartTable where date=2013.05.30,col1<>"A" 

Я предпочел бы не загрузить всю таблицу в память, удалите из РБДА, а затем записать обратно на диск. Можно ли напрямую удалить из таблицы дисков?

ответ

3

kdb сам по себе не обеспечивает простой способ манипулирования секционированными таблицами. Два варианта:

  1. Чтобы уменьшить использование памяти, получите индексы строк, которые вы хотите удалить. Пройдите по столбцу и удалите. Это стандартная практика сокращения использования памяти для операций с многораздельными базами данных.

  2. Ведение столбца, в котором отмечено, удалена ли эта строка обновлением, которое необходимо для маркировки удалений. Это позволит ускорить удаление за счет замедления каждого выбора, который должен был бы фильтроваться там, где он не был удален. В более позднее время удалите строки.