AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-521

Jeremy Boyd's questions

Martin Hope
Jeremy Boyd
Asked: 2014-08-23 08:26:22 +0800 CST

A pesquisa de texto completo em várias colunas está muito lenta

  • 3

Eu tenho um índice de texto completo em uma tabela para as articlescolunas contentetitlekeywords

Ao fazer a busca em cada uma das colunas, assim select count(1) from articles where match(content,title,keywords) against ('cats' in boolean mode), os resultados demoram entre 12 e 15 segundos.

Mas fazer as colunas individualmente ( select count(1) from articles where match(content) against ('cats' in boolean mode)) normalmente leva menos de 50 ms.

Por que pesquisar as 3 colunas leva mais de 100 vezes mais do que todas elas separadamente?

Esta não é uma questão de como torná-lo mais rápido, mas sim de perguntar "por que é tão lento?"

Tabela/Índices

id           int(30)       PK       auto_increment
url          varchar(1024)
title        varchar(255)  FULLTEXT
content      text          FULLTEXT
keywords     varchar(1024) FULLTEXT
comments     text
created_date int(11)
posted_date  int(11)

explica

Este primeiro é a consulta de várias colunas:

insira a descrição da imagem aqui

Esta segunda é a nova consulta muito mais rápida que executa as 3 colunas separadamente e depois as une (o cache da consulta foi limpo).

insira a descrição da imagem aqui

Ordem das Colunas de Texto Completo

insira a descrição da imagem aqui

Usar/Forçar Índice com Explicar

insira a descrição da imagem aqui

mysql performance
  • 1 respostas
  • 9847 Views
Martin Hope
Jeremy Boyd
Asked: 2011-11-02 06:31:55 +0800 CST

Como excluir um backup de um conjunto de backup no SQL Server 2008 R2

  • 10

O título resume bem. Estamos ficando sem espaço em nossos discos de backup e precisamos remover os backups antigos do conjunto. Não consigo encontrar nenhuma informação sobre isso.

sql-server-2008-r2 backup
  • 3 respostas
  • 12057 Views
Martin Hope
Jeremy Boyd
Asked: 2011-09-15 07:41:27 +0800 CST

Para cada instrução de inserção, vejo sp_executesql no SQL Server Profiler

  • 4

Trabalhando no ajuste de nosso banco de dados e consultas para um de nossos produtos, decidi abrir o Profiler no ambiente de controle de qualidade e ver o que ele mostra.

Eu vi para cada inserção que chamei, uma chamada foi feita para sp_executesql com o texto da instrução de inserção.

Este parece ser um grande sucesso, existe uma maneira de desligar isso?

Meio Ambiente:

  • SQL Server 2008 R2 Padrão
  • Windows Server 2008 R2 Enterprise
  • RAM de 32 GB
  • 2x4 Xeon
sql-server-2008 performance
  • 3 respostas
  • 1717 Views
Martin Hope
Jeremy Boyd
Asked: 2011-06-25 07:15:11 +0800 CST

O que é mais eficiente, uma cláusula where ou uma junção com mais de um milhão de tabelas de linhas?

  • 24

Executamos um site que tem 250 milhões de linhas em uma tabela e em outra tabela à qual o associamos para a maioria das consultas tem pouco menos de 15 milhões de linhas.

Estruturas de amostra:

MasterTable (Id, UserId, Created, Updated...) -- 15MM Rows
DetailsTable (Id, MasterId, SomeColumn...) -- 250MM Rows
UserTable (Id, Role, Created, UserName...) -- 12K Rows

Regularmente temos que fazer algumas consultas em todas essas tabelas. Uma é obter estatísticas para usuários gratuitos (~ 10 mil usuários gratuitos).

Select Count(1) from DetailsTable dt 
join MasterTable mt on mt.Id = dt.MasterId 
join UserTable ut on ut.Id = mt.UserId 
where ut.Role is null and mt.created between @date1 and @date2

O problema é que essa consulta algumas vezes será executada por muito tempo devido ao fato de as junções acontecerem muito antes do where.

Nesse caso, seria mais sensato usar wheres em vez de joins ou possivelmente where column in(...)?

join best-practices
  • 3 respostas
  • 127735 Views
Martin Hope
Jeremy Boyd
Asked: 2011-06-08 05:43:31 +0800 CST

Verificando se há dupes na declaração Compact Insert

  • 4

Não tenho certeza se esse é o termo correto "Instrução de inserção compacta". É exatamente o que sempre ouvi referir. É o seguinte:

INSERT INTO [tblUsers]
       ([username], [password]) 
VALUES ('user1', 'pass1'), 
       ('user2', 'pass2')

De qualquer forma, temos uma tabela com pouco mais de 5 milhões de linhas e estamos prestes a importar alguns dados, MAS a probabilidade é alta de que cerca de 75% dos dados sejam duplicados (compramos dados de várias fontes, mas eles compartilham cerca de 30-40% com cada uma de nossas fontes :/).

Se eu fizer uma restrição exclusiva na coluna, toda a inserção falhará desse ponto em diante (a menos que seja envolvido em uma transação, é claro).

Não sei como fazer isso com eficiência e com código que pode ser reutilizado daqui para frente.

sql-server-2008 insert
  • 3 respostas
  • 246 Views
Martin Hope
Jeremy Boyd
Asked: 2011-02-19 15:00:57 +0800 CST

SELECT * WHERE VarCharColumn IN (...) Otimização

  • 6

Tenho uma lista de 3.000 strings e as estou passando (vinte por vez) para uma cláusula IN parametrizada. Definitivamente não está obtendo os resultados que eu gostaria de ver ~ 500ms por execução.

A coluna é um índice. Você conhece uma maneira melhor do que esta:

SELECT * FROM [ohb].[dbo].[MasterUrls] WITH (NOLOCK) WHERE Hash 
IN(@p0,@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9,@p10,@p11,@p12,@p13,@p14,@p15,@p16,@p17,@p18,@p19)

Uma lista de 3000 leva entre 3 e 5 minutos. Eu realmente preciso disso para cerca de 30 segundos. Isso é possível?

Estou usando o MSSQL 2008 R2 em um servidor com 24 GB de RAM e NUMA Xeons duplos de 8 núcleos a 2,4 Ghz rodando em um RAID 10 ISCSI de 6 HDD (@15k/rpm).

A tabela tem 1,4 milhão de linhas e o índice é um índice não clusterizado.

O plano de execução mostra a varredura de índice como 90% da execução total.

sql-server sql-server-2008
  • 4 respostas
  • 461 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve