HTML, JavaScript, PHP, ASP, .Net, C#, MySQL, Ms. SQL ...

SQL: Select TOP 10 em Ms. SQL x MySQL

Efetuando um top10 em mysql, utilizando limit 0,10

cursor location limit record count sql top mysql

Um dos maiores problemas em desenvolver algo na Internet é trocar de linguagem de programação e Banco de Dados.

Especificamente em Banco de Dados, não estou dizendo o sentido de "migrar" bases entre servidores, mas sim você estar acostumado trabalhar com o Microsoft SQL Server, descobrir que aquela empresa onde você hospedou seu site não trabalha com Ms. SQL (um pouco ruim), mas sim TRABALHAR com Ms. SQL e descobrir que seu acesso é muito lento (pior ainda!), às vezes, o servidor caía.

Passei por isso recentemente, desenvolvendo as consultas SQL com suas devidas instruções, em todo o site, tudo bonitinho. De repente, o site começou a ficar fora do ar, as consultas lentas. Onde estava o erro, afinal?

Como estou utilizando o Ms. IE 7.0, um site quando apresenta erro, o navegador interpreta algo do tipo "A PÁGINA NÃO PODE SER EXIBIDA". E agora? Abri o FireFox (apesar de mostrar os erros, eu não curto muito sua interface quadrada), e lá estava o erro! As ConnectionString não achava o servidor ou dava timeout.

Parti então para o MySQL. Não sei se todos passaram por este problema. Com o Ms. SQL Server, eu tenho o QueryAnalizer. E com o MySQL, eu tenho aquela telinha de Prompt do Windows 3.11? Até entrar no Google e achar um bom programa para criar as queryes SQL em interface gráfica e amigável, acabei desitindo do MySQL. E o servidor continua caindo!

Voltei a procurar um programa pra fazer as Queryes em MySQL. É o MySQL Front... Agora eu parto para o MySQL de verdade, e esquecendo de vez o Ms. SQL.

Fiquei então feliz em criar um único Include com uma String de Conexão, criar uma base MySQL, e só apontar para outro servidor de dados. Foi puro engano! Imagine você programar TODO o site utilizando regras de um Banco de Dados, que o outro Banco não possui.

Com isso vieram os problemas:

E com os problemas, busquei aqui, busquei ali, até achar em alguns Fóruns, e passar uma noite mudando tudo o que é consulta! Talvez isso sirva de exemplo pra alguém que já passou por isso. Antes de migrar de plataformas de Banco de Dados, faça testes, procure um bom programa que faça queryes SQL com interface gráfica, pesquise se os mesmos são rápidos...

Logo em seguida, algumas diferenças entre o Banco da Dados Ms. SQL Server e o MySQL.

 

Em Ms. SQL Server...

 CREATE TABLE TABELA

(
CHAVE_PRIMARIA INT IDENTITY PRIMARY KEY,
NOME VARCHAR,
CHAVE_ESTRAGEIRA INT FOREIGN KEY REFERENCES TABELA2 (PK)
)

 

SET IDENTITY_INSERT TABELA ON
INSERT INTO TABELA (CHAVE_PRIMARIA, NOME, CHAVE_ESTRANGEIRA) VALUES (2, 'Fulano',3)
SED IDENTITY_INSERT TABELA OFF

 

SELECT TOP 5 * FROM TABELA

Pra fazer paginação, requer alguns comandos a mais

 

...

 objRecordset.Open, strSQL, objconexao, 3

O 3 já se trata do parâmetro cursorLocation

 

Em MySQL...

 CREATE TABLE TABELA

(
CHAVE_PRIMARIA INT AUTO_INCREMENT,
NOME VARCHAR,
CHAVE_ESTRANGEIRA INT,
PRIMARY KEY (CHAVE_PRIMARIA),
FOREIGN KEY (CHAVE_ESTRANGEIRA) REFERENCES TABELA2 (PK)
)

 

INSERT INTO TABELA (CHAVE_PRIMARIA, NOME, CHAVE_ESTRANGEIRA) VALUES (2, 'Fulano',3)
*Não requer IDENTITY_INSERT ON e OFF, porém é possível DESORGANIZAR a base mais fácil

 

SELECT * FROM TABELA LIMIT 0,5

Muito bom pra fazer paginação

 

...

objRecordset.Open, strSQL, objconexao, 3

O 3 já se trata do parâmetro cursorLocation

 

 RecordCount: Comando para contar quantos registros há. Pode-se substituir por COUNT(*) diretamente no comando SQL, mas sempre irá trazer em TODAS as linhas o valor, às vezes desnecessário. Se o parâmetro cursorLocation não for declarado, o resultado Recordset sempre será -1.

TAGs

ajax arquivo asp boas práticas classe conexão sql connection string cursor location desativar programas erro cs0246 função global.asa global.asax google gráfico include rewriterule upload url amigável url rewrite


2010 - Leonardo Breda