在 Apache Ignite Sql 查询的更新子句中使用索引
Using index in Update Clause on Apache Ignite Sql Query
我如何选择索引以用于像这样的 UPDATE 子句。我需要指定 WHERE 子句中使用的列的索引?
UPDATE
DB.MY_TABLE
SET
BLOCKED = true,
HOME = '1',
WORK = '2',
WHERE
NAME = 'Me';
'NAME' 列使用 INDEX_NAME 索引,但其他列也使用其他索引索引。我想做一些类似的事情来指定我正在使用的索引(这似乎只适用于 SELECT 子句):
SELECT
*
FROM
DB.MY_TABLE
USE INDEX(INDEX_NAME)
WHERE
NAME = 'Me';
Ignite 如何执行这些查询 - 在撰写本文时 post - 是将查询分成两部分:
SELECT
与原始查询中指定的条件相同。
- 迭代
SELECT
结果并更新 SET
子句中指定的每条记录。
通常很容易根据原始查询猜测 SELECT
部分的外观。在您的情况下,我很确定 SELECT * FROM DB.MY_TABLE WHERE Name = 'Me'
是将要执行的查询。
我只是检查 EXPLAIN SELECT * FROM DB.MY_TABLE WHERE Name = 'Me'
使用了您希望它使用的索引,然后相信系统会正确执行 UPDATE
。
我如何选择索引以用于像这样的 UPDATE 子句。我需要指定 WHERE 子句中使用的列的索引?
UPDATE
DB.MY_TABLE
SET
BLOCKED = true,
HOME = '1',
WORK = '2',
WHERE
NAME = 'Me';
'NAME' 列使用 INDEX_NAME 索引,但其他列也使用其他索引索引。我想做一些类似的事情来指定我正在使用的索引(这似乎只适用于 SELECT 子句):
SELECT
*
FROM
DB.MY_TABLE
USE INDEX(INDEX_NAME)
WHERE
NAME = 'Me';
Ignite 如何执行这些查询 - 在撰写本文时 post - 是将查询分成两部分:
SELECT
与原始查询中指定的条件相同。- 迭代
SELECT
结果并更新SET
子句中指定的每条记录。
通常很容易根据原始查询猜测 SELECT
部分的外观。在您的情况下,我很确定 SELECT * FROM DB.MY_TABLE WHERE Name = 'Me'
是将要执行的查询。
我只是检查 EXPLAIN SELECT * FROM DB.MY_TABLE WHERE Name = 'Me'
使用了您希望它使用的索引,然后相信系统会正确执行 UPDATE
。