viernes, 8 de noviembre de 2013

Cambios en columnas

Para alter en columnas seguir la sgte. estructura de script de acuerdo al motor de base de datos:

SQL Server / MS Access:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
My SQL / Oracle:
ALTER TABLE table_name
MODIFY COLUMN column_name datatype
Fuente: http://www.w3schools.com/sql/sql_alter.asp

Alter Table

SQL Server / MS Access:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
My SQL / Oracle:
ALTER TABLE table_name
MODIFY COLUMN column_name datatype

viernes, 17 de agosto de 2012

Indices en SQL Server

El objetivo de un índice es acceder más rápido a los datos. Aparte de los índices que se crean para las llaves primarias se pueden crear otros índices de manera de optimizar consultas sobre campos específicos de las tablas, por ejemplo cuando en un WHERE se considere un campo diferente a la llave primaria.

La sintaxis para crear un índice es la sgte:

create <TIPODEINDICE> index <NOMBREINDICE>
on <TABLA>(<CAMPO(S)>);

El "TIPODEINDICE" indica si es agrupado (clustered) o no agrupado (nonclustered). Si no se especifica se crea uno "No agrupado"
SQL Server crea automáticamente índices cuando se establece una restricción "primary key" o "unique" en una tabla. Al crear una "primary key", si no se especifica, el índice queda como agrupado (clustered) a menos que ya exista un índice agrupado para dicha tabla. Al crear una llave "unique", si no se especifica, el índice será no agrupado (non-clustered).
Los índices clustered son útiles para las columnas que son muy consultadas por algún rango, o accesadas en orden ascendente o descendente.

Consideraciones para usar índices agrupados
  • Columnas selectivas
  • Columnas afectadas en consultas de rangos: BETWEEN, mayor que, menor que, etc.
  • Columnas accedidas "secuencialmente"
  • Columnas implicadas en JOIN, GROUP BY
Los índices nonclustered son útiles cuando se requiere accesar la información de múltiples maneras.

Consideraciones para usar índices no agrupados
  • Columnas con datos muy selectivos
  • Consultas que no devuelven muchas filas.
  • Columnas en WHERE.
  • Evitar acceso a páginas de datos realizando el acceso sólo por el índice.
Luego de crear los índices es necesario revisar que el desempeño de la consulta en cuestión haya mejorado y además ver que otras consultas que se hagan a la tabla no hayan sido afectado negativamente.

Se pueden crear todos los índices que se quieran sobre una tabla, pero se debe tener especial cuidado que eso no haga más lentas las consultas.

Algunas ayudas:
Para obtener la lista de indices de la base de datos:
select name from sysindexes;
 (Al crear los propios índices se puede poner algun prefijo de manera de identificarlos mejor, Ej.: IDX_<NOMBREINDICE>)
Para ver los indices de una tabla:
sp_helpindex <TABLA>;

Fuentes:
http://msdn.microsoft.com/es-es/library/ms345331(v=sql.90).aspx
http://bdatos.wordpress.com/base-de-conocimiento/microsoft-sql-server-perfomance/mssql-una-introduccion-a-los-indices-agrupados-y-no-agrupados-de-estructura-de-datos/
http://www.sqlserverya.com.ar/temarios/descripcion.php?cod=68&punto=62
http://www.zonacodigos.com/index.php/sql/59-creacion-de-indices
http://msdn.microsoft.com/es-es/library/ms130862.aspx

lunes, 19 de diciembre de 2011

golazo

En el partido de que Cobreloa ganó a Colo Colo por 3 a 2, la publicidad del estadio acompaña la jugada en el último gol ...



jueves, 30 de junio de 2011

Caracteres especiales

Solo use lo sgte.:

SELECT columns FROM table WHERE column LIKE '%[%]%'

-- or

SELECT columns FROM table WHERE
column LIKE '%\%%' ESCAPE '\'


Fuente: http://sqlserver2000.databases.aspfaq.com/how-do-i-search-for-special-characters-e-g-in-sql-server.html