Sólo con esto y con la ayuda de la tabla num que siempre tengo implementada en cualquier base de datos con la que trabaje se puede hacer que la cadena ".ax154.as458.az4521." se inserte en una tabla como registros separados, es decir:
ax154
as458
az4521
Se podría hacer un cursor, que resulta lo más fácil, pero puedo decir que hacer un cursor con esto es hacer una buena chapuza. Lo que muestro a continuación está basado en las enseñanzas de una presentación que Itzik Ben-Gan nos hizo en MURCIA.
Para que funcione debemos tener a mano la tabla num:
if NOT exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[num]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
CREATE TABLE [dbo].[num] ( [num] [int] NOT NULL ) ON [PRIMARY]
CREATE UNIQUE CLUSTERED INDEX [PK_num] ON [dbo].[num]([num]) ON
[PRIMARY]
END
GO
IF NOT exists(SELECT * FROM num)
BEGIN
INSERT num values(1)
WHILE (SELECT TOP 1 isnull(num,0) FROM num ORDER by num
desc)<1001
INSERT num
SELECT TOP 1 ISNULL(num,0)+1 FROM num ORDER by num desc
END
GO
Como podéis ver lo único que hace la instrucción anterior es crearnos una tabla con 1000 números secuenciales con una diferencia de 1. Apoyándonos en esta tabla podremos separar la cadena en registros de una forma muy fácil:
DECLARE @Cadena_Farm AS VARCHAR(8000)
SET @Cadena_Farm='.ax154.as458.az4521.'
SELECT (CASE WHEN SUBSTRING(@Cadena_Farm,num,1)='.'
THEN
SUBSTRING(@Cadena_Farm,num+1,CHARINDEX('.',SUBSTRING
(@Cadena_Farm,num+1,8000))-1)
ELSE '' END) AS Cadena
INTO TablaQueNecesito
FROM Num
WHERE num<LEN(@Cadena_Farm) AND SUBSTRING(@Cadena_Farm,num,1)='.'
GO
Blog con trucos y utilidades para desarrollo de aplicaciones. Desde SQL Server, C#, LINQ, Visual Basic, WPF, VSTO, Office, Silverlight y todo lo que pasa por mis manos en el día a día.
sábado, diciembre 03, 2005
domingo, noviembre 20, 2005
Optimizaciones para SQL Server. Versión 1.
Antes de nada lo mejor que se puede hacer y que nunca falla es hacer bocetos del diseño con un lápiz en una cartulina grande. Os recomiendo una cartulina o rollo industrial de papel porque normalmente un folio se queda pequeño nada más empezar y si acumulamos varios folios al final podríamos perdernos. Debemos evaluar la dimensión de datos que va a tener nuestra base de datos, preveer posibles crecimientos, etc. Si la media de nuestros clientes trabajan con 2 millones de registros y con posibilidad crecimiento a 5, no está de más hacer pruebas con ningún registro, con 5 y con 10 millones.
1.-Normalizar , normalizar y normalizar.
a) No repetir datos en distintas tablas.
b) No crear tablas con muchas columnas
c) No crear tablas cuya suma de tamaño columnas sea muy grande.
d) Evitar relacionar muchas tablas entre sí.
2.-Respetar mayúsculas y minúsculas en todos los objetos, tablas, SP, vista, etc. No es lo mismo "Hola" que "hola" para el motor de SQL aunque luego lo ejecute igual. Puede que no encuentre un plan de ejecución en la caché y tenga que crearlo otra vez....
3.-Crear índices, 1 agrupado al menos.
a)Para crear índice debemos tener muy claro antes que tipo de consultas se van a hacer. Si nos conviene utilizar varias columnas en un índice o no.
b)Si utilizamos varios columnas debemos determinar el orden de estas columnas en los índices y en las consultas. En una consulta ordenada por (fecha,factura) un índice (fecha, factura) optimizaría bastante el tiempo de respuesta, sin embargo un índice (factura, fecha) no nos serviría en esta caso.
c)Debemos tener en cuenta que los índices ocupan espacio de disco.
4.-Tracear el movimiento de la base de datos para ver posibles errores. Controlar las inserciones, actualizaciones, borrados y consultas para ver su rendimiento. Quitar y añadir índices.
5.-Si disponemos de 2 disco duros se puede separar el fichero de datos del fichero LOG.
6.-Intentar separar SQL Server de cualquier otro servidor. Un servido dedicado sólo a SQL Server aunque no sea una supermáquina puede optimizar muchísimo el rendimiento SQL Server.
7.-Controlar el tamaño de Log. Es muy frecuente encontrar en los foros gente con problemas del tamaño del Log de la base de datos.
8.-Planificar una plan de mantenimiento para la base de datos.
Dejo abierto este artículo para futuras correcciones....
1.-Normalizar , normalizar y normalizar.
a) No repetir datos en distintas tablas.
b) No crear tablas con muchas columnas
c) No crear tablas cuya suma de tamaño columnas sea muy grande.
d) Evitar relacionar muchas tablas entre sí.
2.-Respetar mayúsculas y minúsculas en todos los objetos, tablas, SP, vista, etc. No es lo mismo "Hola" que "hola" para el motor de SQL aunque luego lo ejecute igual. Puede que no encuentre un plan de ejecución en la caché y tenga que crearlo otra vez....
3.-Crear índices, 1 agrupado al menos.
a)Para crear índice debemos tener muy claro antes que tipo de consultas se van a hacer. Si nos conviene utilizar varias columnas en un índice o no.
b)Si utilizamos varios columnas debemos determinar el orden de estas columnas en los índices y en las consultas. En una consulta ordenada por (fecha,factura) un índice (fecha, factura) optimizaría bastante el tiempo de respuesta, sin embargo un índice (factura, fecha) no nos serviría en esta caso.
c)Debemos tener en cuenta que los índices ocupan espacio de disco.
4.-Tracear el movimiento de la base de datos para ver posibles errores. Controlar las inserciones, actualizaciones, borrados y consultas para ver su rendimiento. Quitar y añadir índices.
5.-Si disponemos de 2 disco duros se puede separar el fichero de datos del fichero LOG.
6.-Intentar separar SQL Server de cualquier otro servidor. Un servido dedicado sólo a SQL Server aunque no sea una supermáquina puede optimizar muchísimo el rendimiento SQL Server.
7.-Controlar el tamaño de Log. Es muy frecuente encontrar en los foros gente con problemas del tamaño del Log de la base de datos.
8.-Planificar una plan de mantenimiento para la base de datos.
Dejo abierto este artículo para futuras correcciones....
Suscribirse a:
Entradas (Atom)
Etiquetas
.net
(1)
ALGORITMO
(4)
algoritmos
(1)
Android
(1)
angular
(2)
aplicaciones WEB
(1)
ARGENTINA
(1)
ASP
(4)
asp .NET
(1)
ASP .NET Identity
(1)
attach
(1)
Azure
(1)
base de datos
(1)
BINDING
(1)
BioInformática
(2)
bootstrap
(1)
C
(2)
C#
(27)
castellano
(1)
catalán
(1)
Charla
(1)
CheckedListBox
(1)
Clase
(1)
clausura transitiva
(2)
CLIENTES
(1)
Closing
(1)
Combobox
(1)
Comisiones
(1)
CONCURSO
(1)
condones
(1)
consultas
(1)
corrupta
(1)
CORS OWIN
(1)
CORS WEB API 2
(1)
Criptografía
(1)
CUENTA NARANJA
(1)
Custom Control
(1)
Daniel Seara
(1)
DATAGRIDVIEW
(1)
David Salgado
(2)
dendrograma
(6)
depurar
(1)
desarrollo
(1)
Deserializar
(1)
DEVCAMP
(2)
durex
(1)
e-DNI
(1)
el Guille
(2)
Eladio Rincón
(1)
elGamal
(1)
encriptación
(1)
encuesta
(1)
Entidad
(1)
ERROR
(2)
error 3624
(1)
España
(1)
España es nido de víboras.
(1)
Euclides
(1)
Euclides extendido
(1)
evento
(1)
eventos.
(1)
factorización
(1)
factorizar
(1)
física
(1)
Framework 2.0
(1)
Framework 3.5
(5)
Framework 4
(2)
Francisco González
(1)
Francisco Ruiz
(1)
GO
(1)
google
(1)
gossip
(1)
Grupos de usuarios
(1)
Guadalajara
(1)
Guille Comunity Tour
(2)
Gusenet
(9)
GUSENET.
(1)
Huelga informáticos
(1)
IBEX 35
(1)
Idioma
(1)
IFT
(1)
IISExpress
(1)
Indice de Fuerza Tecnica
(1)
informática
(1)
Informix
(1)
ING DIRECT
(1)
INGDIRECT
(1)
Ingeniería Informática
(2)
Inteligencia artificial
(5)
Intro
(1)
IOS
(1)
IPad
(1)
IPhone
(1)
IV Aniversario
(1)
JavaScript
(2)
JPA
(2)
keybd_event
(1)
LA CAIXA
(1)
La Pineda
(1)
ladroentidad
(1)
Lector RSS
(2)
LINQ
(5)
LINQ2XML
(1)
ListBox
(1)
Live Distributed Objects
(1)
llenar
(1)
LOG
(1)
Madrid .NET
(1)
MainMenu
(1)
MAP
(1)
MAP 2011
(1)
MAR DEL PLATA
(1)
matemáticas
(1)
Matriculación
(1)
MDIList
(1)
MdiWindowsListItem
(1)
MenuItem
(1)
MenuStrip
(1)
Microsoft
(18)
Microsoft Active Professional
(1)
Miguel Egea
(2)
MSDE 2
(1)
MSDE 2000
(1)
MVVM Light
(2)
mysql
(1)
NAMESPACE
(1)
Needleman
(2)
NET
(1)
NS
(1)
Oferta empleo
(1)
Office 14
(1)
Office 2007
(1)
Office 2009
(1)
ON ERROR
(1)
OOB
(1)
Oscar Montesinos
(1)
OWIN
(1)
OWIN Security middleware
(1)
Paginación
(1)
PDC
(1)
Pedro Hurtado
(1)
PINTARTECA
(1)
PrinterSettings
(1)
Process
(1)
ProcessStartInfo
(1)
Programador
(1)
Relacional
(1)
robo
(1)
RSS
(1)
Rubén Garrigós
(1)
Salvador Ramos
(1)
Santa Pola
(1)
scrape
(1)
scraping
(1)
ScrollBar
(1)
Secretaría
(1)
SendInput
(1)
SENDKEYS
(1)
Sergio Vázquez
(1)
Serializar
(1)
Silverlight 2.0
(2)
Silverlight 4
(1)
Silverlight 5
(3)
Silverlight.
(1)
Sindicado
(1)
Sistema Personal de Trading
(3)
Sistemas Distribuidos
(1)
SOLID SUMMIT 2009
(1)
SPT
(2)
SQL Server
(3)
SQL Server 2000
(2)
SQL Server 2005
(2)
SQL Server 2008
(3)
SQL Server Denali
(1)
SQL Server Information Services.
(1)
SQLU
(1)
SSIS
(1)
SUMMIT SQL
(1)
Suspect
(1)
Syndication
(1)
TAB
(1)
Tablas
(1)
Tarragona
(1)
Token bearer
(1)
ToolStripMenuItem
(1)
ToString()
(1)
Traductor
(1)
transacciones
(1)
treeview
(1)
truco
(1)
TRY CATCH
(1)
UCI
(1)
Unience
(2)
Universad
(1)
Universidad Oberta Catalunya
(2)
UOC
(8)
Usuarios.
(1)
VB
(1)
VB6
(1)
VB9
(1)
VIAJAR
(1)
Vila-seca
(1)
VISUAL BASIC
(3)
Visual Basic.
(1)
visual studio
(1)
Visual Studio 2005
(1)
Visual Studio 2008
(16)
Visual Studio 2010
(2)
Visual Studio 2013
(1)
VS2010
(1)
VSTA
(1)
VSTO
(1)
WCF
(1)
WEB API
(1)
web.config
(1)
WebClient
(1)
WF
(1)
windows
(1)
Windows 7
(3)
Windows 8
(2)
Windows Azure
(1)
Windows pone
(1)
Windows Server 2008
(1)
Windows Vista
(1)
woff
(1)
WP7
(1)
WPF
(1)
Wunsch
(2)
XAML
(4)
XDocument
(1)
XElement
(1)
XML
(3)
XNA
(1)
Yield
(2)