Optimizar Consulta en SQL

18/11/2006 - 02:27 por Juan Huachaca Gomez | Informe spam
Amigos tengo esta consulta:

select * from ato001compra
where convert(integer,CATEGO) = convert(integer,'1')
AND convert(integer,SUBCAT) = convert(integer,'3')
AND convert(integer,FABRICA) = convert(integer,'98')
AND convert(integer,MARCA) = convert(integer,'9998')
AND convert(integer,CONTEN) = convert(integer,'72')
AND convert(integer,CLASS01) = convert(integer,'4')
AND convert(integer,CLASS02) = convert(integer,'0')
AND convert(integer,CLASS03) = convert(integer,'0')
AND convert(integer,CLASS04) = convert(integer,'0')

consulto en una tabla con aproximadamente 2 999 546 345 registros me dijeron
algo de indices pero el problema es que la actualizacion se me hace lenta
como puedo optimizarlo ???

Por favor espero me puedan ayudar !!!!! es urgente

Salu2

Juan Huachaca Gómez
MSN: j_huachaca79@yahoo.es
 

Leer las respuestas

#1 Javier Loria
18/11/2006 - 03:01 | Informe spam
Hola Juan:
Parece que lo que tienes es un problema de diseño de la base de datos,
ya que CATEGO, SUBCAT, FABRICA, MARCA, CONTENT, CLASS01, CLASS02, CLASS003 y
CLASS04 deberian ser almaceandos como enteros eliminando la necesidad de de
hacer estas conversiones.
En todo caso podrias hacer:
=select * from ato001compra
where CATEGO = '1'
AND SUBCAT = '3'
AND FABRICA = '98'
AND MARCA = '9998'
AND CONTEN = '72'
AND CLASS01 = '4'
AND CLASS02 = '0'
AND CLASS03 = '0'
AND CLASS04 = '0'
O en sus defecto usar:
select * from ato001compra
where CATEGO LIKE '1%'
AND SUBCAT LIKE '3%'
AND FABRICA LIKE '98%'
AND MARCA LIKE '9998%'
AND CONTEN LIKE '72%'
AND CLASS01 LIKE '4%'
AND CLASS02 LIKE '0%'
AND CLASS03 LIKE '0%'
AND CLASS04 LIKE '0%'
Lo que igualmente ineficiente es poner un % adelante.
Saludos,


Javier Loria
Costa Rica-MVP
Solid Quality Learning

"Juan Huachaca Gomez" wrote in message
news:u3cr$
Amigos tengo esta consulta:

select * from ato001compra
where convert(integer,CATEGO) = convert(integer,'1')
AND convert(integer,SUBCAT) = convert(integer,'3')
AND convert(integer,FABRICA) = convert(integer,'98')
AND convert(integer,MARCA) = convert(integer,'9998')
AND convert(integer,CONTEN) = convert(integer,'72')
AND convert(integer,CLASS01) = convert(integer,'4')
AND convert(integer,CLASS02) = convert(integer,'0')
AND convert(integer,CLASS03) = convert(integer,'0')
AND convert(integer,CLASS04) = convert(integer,'0')

consulto en una tabla con aproximadamente 2 999 546 345 registros me
dijeron algo de indices pero el problema es que la actualizacion se me
hace lenta como puedo optimizarlo ???

Por favor espero me puedan ayudar !!!!! es urgente

Salu2

Juan Huachaca Gómez
MSN:

Preguntas similares