Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Estas práticas recomendadas refletem as recomendações partilhadas por uma equipa multifuncional de utilizadores experientes do Looker. Estas estatísticas resultam de anos de experiência a trabalhar com clientes do Looker, desde a implementação ao sucesso a longo prazo. As práticas são escritas para funcionar para a maioria dos utilizadores e situações, mas deve usar o seu melhor julgamento ao implementá-las.
Otimize o desempenho das consultas
Pode garantir que as consultas são criadas e executadas de forma ideal na sua base de dados com as seguintes sugestões de front-end e back-end:
Crie explorações com junções many_to_one sempre que possível. A união de visualizações do nível mais detalhado ao nível de detalhe mais elevado (many_to_one) oferece normalmente o melhor desempenho das consultas.
Maximize o armazenamento em cache para sincronizar com as suas políticas de ETL sempre que possível, de modo a reduzir o tráfego de consultas da base de dados. Por predefinição, o Looker armazena em cache as consultas durante uma hora. Pode controlar a política de colocação em cache e sincronizar as atualizações de dados do Looker com o seu processo de ETL aplicando grupos de dados
nas explorações, através do parâmetro persist_with. Isto permite que o Looker se integre mais estreitamente com o pipeline de dados de back-end, para que a utilização da cache possa ser maximizada sem o risco de analisar dados desatualizados. As políticas de colocação em cache com nome podem ser aplicadas a um modelo completo e/ou a explorações individuais e tabelas derivadas persistentes (PDTs).
Use PDTs para consultas mais rápidas. Converta as análises detalhadas com muitas junções complexas ou com baixo desempenho, ou dimensões com subconsultas ou subseleções, em PDTs para que as visualizações de propriedade sejam pré-unidas e estejam prontas antes do tempo de execução.
Evite juntar vistas em opções Explorar com chaves principais concatenadas definidas no Looker. Em alternativa, junte-se aos campos base que compõem a chave principal concatenada da vista. Em alternativa, recrie a vista como um PDT com a chave principal concatenada predefinida na definição SQL da tabela, em vez de no LookML de uma vista.
Tire partido da ferramenta Explicar em execução de SQL para testes de referência. EXPLAIN produz uma vista geral do plano de execução de consultas da sua base de dados para uma determinada consulta SQL, o que lhe permite detetar componentes de consultas que podem ser otimizados. Saiba mais no artigo da comunidade Como otimizar o SQL com o EXPLAIN.
Declare os índices. Pode consultar os índices de cada tabela diretamente no Looker a partir do SQL Runner clicando no ícone de roda dentada numa tabela e, em seguida, selecionando Mostrar índices.
As colunas mais comuns que podem beneficiar de índices são datas importantes e chaves externas. A adição de índices a estas colunas aumenta o desempenho de quase todas as consultas. Isto também se aplica a PDTs. Os parâmetros do LookML, como indexes, sort keys e distribution, podem ser aplicados adequadamente.
Aumente a memória, os núcleos e a E/S (entrada/saída) das bases de dados com hardware insuficiente ou recursos aprovisionados necessários (como a AWS) para o processamento de grandes conjuntos de dados, de modo a aumentar o desempenho das consultas.
Otimize o desempenho do servidor do Looker
Também pode tomar medidas para garantir que o servidor e a aplicação do Looker estão a ter um desempenho ideal:
Limite o número de elementos num painel de controlo individual. Não existe uma regra precisa para definir o número, porque o design de cada elemento afeta o consumo de memória com base em vários fatores. No entanto, os painéis de controlo com 25 ou mais mosaicos tendem a ser problemáticos em termos de desempenho.
Use a funcionalidade de atualização automática do painel de controlo de forma estratégica. Se um painel de controlo usar a atualização automática, certifique-se de que a atualização não é mais rápida do que os processos de ETL executados em segundo plano.
Use as tabelas dinâmicas de forma estratégica e evite usá-las em excesso nos mosaicos do painel de controlo e nas análises detalhadas. As consultas com dimensões invertidas consomem mais memória. Quanto mais dimensões forem invertidas, mais memória é consumida quando o conteúdo (uma análise detalhada, um visual ou um painel de controlo) é carregado.
Use funcionalidades como mesclar resultados, campos personalizados e cálculos de tabelas com moderação.
Estas funcionalidades destinam-se a ser usadas como provas de conceito para ajudar a conceber o seu modelo.
É uma prática recomendada codificar permanentemente todos os cálculos e funções usados com frequência no LookML, o que gera SQL a ser processado na sua base de dados.
Os cálculos excessivos podem competir pela memória Java na instância do Looker, o que faz com que a instância do Looker responda mais lentamente.
Limite o número de vistas incluídas num modelo quando estiver presente um grande número de ficheiros de vistas. A inclusão de todas as visualizações num único modelo pode diminuir o desempenho. Quando um projeto tiver um grande número de vistas, considere incluir apenas os ficheiros de vistas necessários em cada modelo. Considere usar convenções de nomenclatura estratégicas para os nomes dos ficheiros de visualização, de modo a permitir a inclusão fácil de grupos de visualizações num modelo. Pode encontrar um exemplo na documentação do parâmetro includes.
Evite devolver um grande número de pontos de dados por predefinição nos mosaicos do painel de controlo e nos Looks. As consultas que devolvem milhares de pontos de dados consomem mais memória. Certifique-se de que os dados são limitados sempre que possível aplicando
filtros de front-end a painéis de controlo, Looks e explorações, e ao nível do LookML com os parâmetros required filters, conditionally_filter e sql_always_where.
Transfira ou envie consultas usando a opção Todos os resultados com moderação, uma vez que algumas consultas podem ser muito grandes e sobrecarregar o servidor do Looker quando processadas.
Para obter mais ajuda na identificação da origem dos problemas de desempenho, consulte a página de práticas recomendadas Vista geral do desempenho.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-20 UTC."],[],[],null,["# Optimize Looker performance\n\n\u003e *These best practices reflect recommendations shared by a cross-functional team of seasoned Lookers. These insights come from years of experience working with Looker customers from implementation to long-term success. The practices are written to work for most users and situations, but you should use your best judgment when implementing.*\n\nOptimize query performance\n--------------------------\n\n\nYou can ensure that queries are built and executed optimally against your database with the following frontend and backend tips:\n\n- Build Explores using [`many_to_one`](/looker/docs/reference/param-explore-join-relationship#many_to_one_(the_default_value)) joins whenever possible. Joining views from the most granular level to the highest level of detail (`many_to_one`) typically provides the best query performance.\n- Maximize caching to sync with your ETL policies wherever possible to reduce database query traffic. By default, Looker caches queries for one hour. You can control the caching policy and sync Looker data refreshes with your ETL process by applying [datagroups](/looker/docs/caching-and-datagroups) within Explores, using the [`persist_with`](/looker/docs/reference/param-explore-persist-with) parameter. This enables Looker to integrate more closely with the backend data pipeline, so cache usage can be maximized without the risk of analyzing stale data. Named caching policies can be applied to an entire model and/or to individual Explores and [persistent derived tables](/looker/docs/caching-and-datagroups#how_looker_uses_pdts_and_rebuilds_them) (PDTs).\n- Use Looker's [aggregate awareness](/looker/docs/aggregate_awareness) functionality to create roll-ups or summary tables that Looker can use for queries whenever possible, especially for common queries of large databases. You can also leverage aggregate awareness to drastically [improve the performance of entire dashboards](/looker/docs/reference/param-explore-aggregate-table#get_lookml_dashboard). See the [Aggregate awareness tutorial](/looker/docs/best-practices/aggregate-awareness-tutorial) for additional information.\n- Use [PDTs](/looker/docs/derived-tables#persistent_derived_table) for faster queries. Convert Explores with many complex or unperformant joins, or dimensions with subqueries or subselects, into PDTs so that the views are pre-joined and ready prior to runtime.\n- If your [database dialect supports incremental PDTs](/looker/docs/incremental-pdts#supported_database_dialects_for_incremental_pdts), configure [incremental PDTs](/looker/docs/incremental-pdts) to reduce the time Looker spends rebuilding PDT tables.\n- Avoid joining views into Explores on concatenated [primary keys](/looker/docs/reference/param-field-primary-key) that are defined in Looker. Instead, join on the base fields that make up the concatenated primary key from the view. Alternatively, recreate the view as a PDT with the concatenated primary key predefined in the table's SQL definition, rather than in a view's LookML.\n- Leverage the [Explain in SQL Runner tool](/looker/docs/sql-runner-manage-db#examining_an_execution_plan_using_explain) for benchmarking. `EXPLAIN` produces an overview of your database's query execution plan for a given SQL query, letting you detect query components that can be optimized. Learn more in the [How to optimize SQL with `EXPLAIN`](https://community.looker.com/technical-tips-tricks-1021/how-to-optimize-sql-with-explain-30772) Community post.\n- Declare indexes. You can look at the indexes of each table directly in Looker from [SQL Runner](/looker/docs/sql-runner-basics) by clicking the gear icon in a table and then selecting [**Show Indexes**](/looker/docs/sql-runner-manage-db#getting_table_information).\n\n \u003cbr /\u003e\n\n The most common columns that can benefit from indexes are important dates and foreign keys. Adding indexes to these columns will increase performance for almost all queries. This also applies for PDTs. LookML parameters, such as [`indexes`](/looker/docs/reference/param-view-indexes), [`sort keys`](/looker/docs/reference/param-view-sortkeys), and [`distribution`](/looker/docs/reference/param-view-distribution), can be applied appropriately.\n- Increase memory, cores, and I/O (input/output) of databases with insufficient hardware or necessary provisioned resources (such as AWS) for processing large datasets, to increase query performance.\n\nOptimize Looker server performance\n----------------------------------\n\n\nYou can also take measures to ensure that the Looker server and application are performing optimally:\n\n- Limit the number of elements within an individual dashboard. There is no precise rule for defining the number, because the design of each element impacts memory consumption based on a variety of factors; however, dashboards with 25 or more tiles tend to be problematic when it comes to performance.\n- Use the [dashboard auto refresh](/looker/docs/editing-user-defined-dashboards#autorefresh) feature strategically. If a dashboard uses auto refresh, make sure it refreshes no faster than the ETL processes running behind the scenes.\n- Use pivots strategically, and avoid over-using pivots within dashboard tiles and Looks. Queries with pivoted dimensions will consume more memory. The more dimensions that are pivoted, the more memory is consumed when content (an Explore, a Look, or a dashboard) is loaded.\n- Use features, such as [merge results](/looker/docs/merged-results), [custom fields](/looker/docs/custom-fields), and [table calculations](/looker/docs/table-calculations), sparingly. These features are intended to be used as proofs of concept to help design your model. It is best practice to hardcode any frequently used calculations and functions in LookML, which will generate SQL to be processed on your database. Excessive calculations can compete for Java memory on the Looker instance, causing the Looker instance to respond more slowly.\n- Limit the number of views included within a model when a large number of view files are present. Including all views in a single model can slow performance. When a large number of views are present within a project, consider including only the view files needed within each model. Consider using strategic naming conventions for view file names, to enable easy inclusion of groups of views within a model. An example is outlined in the [`includes`](/looker/docs/reference/param-model-include#things_to_know) parameter documentation.\n- Avoid returning a large number of data points by default within dashboard tiles and Looks. Queries that return thousands of data points will consume more memory. Ensure that data is limited wherever possible by applying frontend [filters](/looker/docs/filters-user-defined-dashboards#adding_dashboard_filters) to dashboards, Looks and Explores, and on the LookML level with [`required filters`](/looker/docs/filters-user-defined-dashboards#requiring_a_filter_value), [`conditionally_filter`](/looker/docs/reference/param-explore-conditionally-filter) and [`sql_always_where`](/looker/docs/reference/param-explore-sql-always-where) parameters.\n- Download or deliver queries using the [**All Results**](/looker/docs/downloading#all_results) option sparingly, as some queries can be very large and overwhelm the Looker server when processed.\n\n\nFor more help identifying the source of performance issues, check out the [Performance overview](/looker/docs/best-practices/how-to-optimize-looker-performance) Best Practices page."]]