As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Otimização de consultas
Filtros de metadados
Ao consultar metadados ou dados brutos, use a WHERE
cláusula para filtrar por campos de metadados para reduzir a quantidade de dados digitalizados. Use os seguintes operadores para limitar a verificação de metadados:
Igual (=)
Não é igual (>)
LIKE
IN
E
OU
Para propriedades de atributos, use os campos a seguir para filtrar os resultados. :
double_attribute_value
int_attribute_value
boolean_attribute_value
string_attribute_value
Esses campos oferecem melhor desempenho do que a tabela latest_value_time_series para propriedades de ativos do tipo de atributo.
nota
Use literais no lado direito dos operadores para limitar adequadamente a varredura de dados. Por exemplo, a consulta a seguir tem um desempenho pior do que usar uma string literal estrita:
SELECT property_id FROM asset_property WHERE property_name = CONCAT('my', 'property')
exemplo para filtros de metadados:
SELECT p.property_name FROM asset_property p WHERE p.property_type = 'attribute' AND p.string_attribute_value LIKE 'my-property-%'
Filtros de dados brutos
Todas as tabelas de dados brutos (raw_time_series, latest_value_time_series, precomputed_aggregates) têm timestamps associados às suas linhas. Além dos filtros de metadados, use filtros de WHERE
cláusula no event_timestamp
campo para reduzir a quantidade de dados digitalizados. Use as seguintes operações para limitar a verificação de dados brutos:
Igual (=)
Maior que (>)
Menor que (<)
Maior ou igual a (>=)
Menor ou igual a (<=)
BETWEEN
E
Ao consultar a tabela precomputed_aggregates, sempre especifique um filtro de qualidade na cláusula. WHERE
Isso reduz a quantidade de dados que a consulta verifica, especialmente se você estiver procurando BAD
por UNCERTAIN
dados. Também é altamente recomendável usar um filtro de resolução (1m, 15m, 1h ou 1d) ao consultar a tabela precomputed_aggregates. Se você não especificar um filtro de resolução, AWS IoT SiteWise usará como padrão uma varredura completa da tabela em todas as resoluções, o que é ineficiente.
nota
Não são iguais (!=)
e os OR
operadores normalmente não aplicam filtros significativos à verificação de dados brutos. Filtros em valores de dados brutos (string_value, double_value etc.) também não limitam a varredura de dados brutos.
Otimização JOIN
AWS IoT SiteWise O SQL suporta a JOIN
palavra-chave para mesclar duas tabelas. Somente JOIN
aqueles que filtram ativamente em um campo (usando a ON
palavra-chave) são suportados. As uniões cartesianas completas são proibidas.
AWS IoT SiteWise também suporta JOIN
s implícitos sem usar a JOIN
palavra-chave. Elas são permitidas entre tabelas de metadados diferentes e entre uma tabela de metadados e uma tabela bruta. Por exemplo, esta consulta:
SELECT a.asset_name, p.property_name FROM asset a, asset_property p
Tem um desempenho melhor do que essa consulta equivalente:
SELECT a.asset_name, p.property_name FROM asset a JOIN asset_property p ON a.asset_id = p.asset_id
As seguintes junções implícitas são permitidas (O é permitido, X é proibido):
asset | asset_property | latest_value_time_series | raw_time_series | precomputed_aggregates | subconsulta | |
---|---|---|---|---|---|---|
asset | X | O | O | O | O | X |
asset_property | O | X | O | O | O | X |
latest_value_time_series | O | O | X | X | X | X |
raw_time_series | O | O | X | X | X | X |
precomputed_aggregates | O | O | X | X | X | X |
subconsulta | X | X | X | X | X | X |
Use JOIN
s implícitos sempre que possível. Se você precisar usar a JOIN
palavra-chave, aplique filtros nas tabelas de ensino individuais JOIN
para minimizar os dados digitalizados. Por exemplo, em vez dessa consulta:
SELECT level1.asset_id, level2.asset_id, level3.asset_id FROM asset AS level1 JOIN asset AS level2 ON level2.parent_asset_id = level1.asset_id JOIN asset AS level3 ON level3.parent_asset_id = level2.asset_id WHERE level1.asset_name LIKE 'level1%' AND level2.asset_name LIKE 'level2%' AND level3.asset_name LIKE 'level3%'
Use essa consulta mais eficiente:
SELECT level1.asset_id, level2.asset_id, level3.asset_id FROM asset AS level1 JOIN (SELECT asset_id, parent_asset_id FROM asset WHERE asset_name LIKE 'level2%') AS level2 ON level2.parent_asset_id = level1.asset_id JOIN (SELECT asset_id, parent_asset_id FROM asset WHERE asset_name LIKE 'level3%') AS level3 ON level3.parent_asset_id = level2.asset_id WHERE level1.asset_name LIKE 'level1%'
Ao inserir filtros de metadados em subconsultas, você garante que tabelas individuais no JOIN
s sejam filtradas durante o processo de digitalização. Você também pode usar a LIMIT
palavra-chave em subconsultas para obter o mesmo efeito.
Consultas grandes
Para consultas que produzem mais linhas do que o padrão, defina o tamanho da página da ExecuteQueryAPI para o valor máximo de 20000. Isso melhora o desempenho geral da consulta.
Use a LIMIT
cláusula para reduzir a quantidade de dados digitalizados para algumas consultas. Observe que as funções agregadas e certas cláusulas de toda a tabela (GROUP BY
,ORDER BY
,JOIN
) exigem uma verificação completa para serem concluídas antes de aplicar a cláusula. LIMIT
nota
AWS IoT SiteWise pode escanear uma quantidade mínima de dados mesmo com a LIMIT
cláusula aplicada, especialmente para consultas de dados brutos que examinam várias propriedades.