Как создать многоколоночные индексы DuckDB/SQLite?
У меня есть DuckDB со столбцами данных, которые я хотел бы запросить, используя несколько столбцов. Я использую R, но я не уверен, как создать многоколоночный индекс (или даже индекс с одним столбцом). Кто-нибудь может предложить ссылку, пожалуйста? Я добавил SQLite в качестве тега, потому что полагаю, что команды могут быть одинаковыми.
Изменить: на основе рекомендации kukuk1de я пробую следующее
require(DBI)
require(duckdb)
DBI::dbExecute(con,statement = "CREATE INDEX multi_idx ON (percent prevalence fresh_flow maskProp dropExhale)")
но я получаю следующую ошибку:
Error in .local(conn, statement, ...) :
duckdb_prepare_R: Failed to prepare query CREATE INDEX multi_idx ON (percent prevalence fresh_flow maskProp dropExhale)
Error: Parser Error: syntax error at or near "("
LINE 1: CREATE INDEX multi_idx ON (percent prevalence fresh_flow maskProp...
1 ответ
Решение
Try this:
library("DBI")
con = dbConnect(duckdb::duckdb(), dbdir=":memory:", read_only=FALSE)
dbExecute(con, "CREATE TABLE items(item VARCHAR, value DECIMAL(10,2), count INTEGER)")
dbExecute(con, "INSERT INTO items VALUES ('jeans', 20.0, 1), ('hammer', 42.2, 2)")
dbExecute(con, "CREATE INDEX itemcount_idx ON items (item, count);")
Running the last command again will tell you the index already exists.
dbExecute(con, "CREATE INDEX itemcount_idx ON items (item, count);")
Error in duckdb_execute(res) : duckdb_execute_R: Failed to run query
Error: Catalog Error: Index with name "itemcount_idx" already exists!