Fórum tabela_grande_lentidao #24662
10/03/2010
0
Isolar antes de executar o sql, assim na hora de percorrer os registros, eu percorreria somente da pessoa 1.
Eu li que na versao do fire 2.1 ja possui os recursos de tabela temporarias, mas eu uso uma aplicacaçao 3 camadas, se eu fizer isto vou ter que fazer comandos para o fire e para o oracle, pois trabalho com estes dois bancos no mesmo sistema.
Eu poderia fazer uma estore procedure, mas tambem nao quero, pois eu ficaria preso ao banco.
Tem alguma coisa que posso fazer.
Jose Boas
Curtir tópico
+ 0Posts
11/03/2010
Wesley Yamazack
Sua tabela é grande e tudo mais, porém como esta a estrutura dela ? Você tem indices nela ? Os campos que você faz os Joins, não poderiam ser indexados ?
Se quiser mandar a estrutura da tabela derrepente fica mais facil de analisar.
Um abraço
Wesley Y
Gostei + 0
11/03/2010
Jose Boas
Gostei + 0
11/03/2010
Jose Boas
CREATE TABLE EXAME_COMPLEMENTAR (
CODPESSOA INTEGER NOT NULL,
DATA DATE NOT NULL,
CODEXAME INTEGER NOT NULL,
RESULTADO_EXAME VARCHAR(2000),
SITUACAO INTEGER,
CODLABORATORIO INTEGER,
BLOQ CHAR(1),
RESPONSAVEL VARCHAR(40),
CODIGO FLOAT,
IMAGEM CHAR(1),
CAMINHO_IMG VARCHAR(80),
CODUSU INTEGER,
DATA_ATUALIZACAO DATE,
CODSOLIC FLOAT
);
CREATE TABLE EMPRESA_FUNCAO_SETOR_EXAME (
CODEMPRESA INTEGER NOT NULL,
CODFUNCAO INTEGER NOT NULL,
CODSETOR INTEGER NOT NULL,
CODEXAME INTEGER NOT NULL,
IDADE_MIM SMALLINT,
IDADE_MAX SMALLINT,
ADMISSIONAL VARCHAR(3),
PERIODO SMALLINT,
DEMISSIONAL VARCHAR(3),
OCUPACIONAL CHAR(3),
PERIODICO VARCHAR(3),
BLOQ CHAR(1),
ORIGEM INTEGER,
CODEMPORIGEM INTEGER,
CODSETORIGEM INTEGER,
FLAG CHAR(1),
CODEMPORIGEM_ANT INTEGER,
CODSETORIGEM_ANT INTEGER,
ORIGEM_ANT INTEGER
);
CREATE TABLE EMPRESA_FUNCAO_SETOR_ASO (
CODEMPRESA INTEGER NOT NULL,
CODFUNCAO INTEGER NOT NULL,
CODSETOR INTEGER NOT NULL,
PERIODO INTEGER,
RECOMENDACOES VARCHAR(100),
DEMISSIONAL SMALLINT,
BLOQ CHAR(1)
);
CREATE TABLE PESSOAS (
CODIGO INTEGER NOT NULL,
NOME VARCHAR(40),
CTPS VARCHAR(17),
IDENTIDADE VARCHAR(15),
CPF VARCHAR(15),
PIS VARCHAR(15),
URLFOTO VARCHAR(100),
ENDER VARCHAR(40),
CODCID INTEGER,
FONE1 VARCHAR(15),
FONE2 VARCHAR(15),
EMAIL VARCHAR(40),
CODGINSTRUCAO SMALLINT,
ESTUDA SMALLINT,
NASCIMENTO DATE,
SEXO SMALLINT,
CODCIDNAT INTEGER,
CODESTCIVIL SMALLINT,
OBS VARCHAR(2000),
TPSANGUE VARCHAR(40),
CODDEFI INTEGER,
DEFI SMALLINT,
STATUS SMALLINT,
PDE SMALLINT,
BLOQ CHAR(1),
BAIRRO VARCHAR(40),
COMPLEMENTO VARCHAR(40),
CEP VARCHAR(12)
);
Gostei + 0
12/03/2010
Wesley Yamazack
O lance de ser em 3 camadas, não depende do banco de dados, sacou ? O desempenho do banco depende unica e exclusivamente dele, obvio que se você puder evitar comandos grandes, filtrar mais os dados, ficar melhor para o desempenho, a criação de indices é importante para o banco poder se organizar melhor na hora de buscar, procure criar indices nos campos que você bota no Where.
Outra coisa, você esta fazendo todos os joins possíveis certo ? Não ficou faltando nenhum? Existe alguma forma de você buscar os dados mais filtrados ? exemplo idpaciente = 1, depois = 2, e por ai vai ? Evitando trazer uma grande massa de dados.
Espero te ajudado, estou a disposição
Um abraço
Wesley Y
Gostei + 0
15/03/2010
Jose Boas
Gostei + 0
15/03/2010
Wesley Yamazack
Você pode e deve criar ele como chave primária para manter a integridade do seu banco de dados
Um abraço
Wesley Y
Gostei + 0
18/03/2010
Wesley Yamazack
Um abraço
Wesley Y
Gostei + 0
23/03/2010
Wesley Yamazack
Att,
Wesley Y
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)