Sql FAQ

1.查詢結果根據條件翻譯成其餘值sql

select SNAME,FENSHU=case when FENSHU>=90 then '優秀' when FENSHU>=80 then '良好'when FENSHU>=60 then '及格' else '不及格' end 
from S_STUDENT
select SNAME,FENSHU=case FENSHU when 90 then '優秀' when 80 then '良好' when 60 then '及格' else '不及格' end 
from S_STUDENT

 2.sql 動態組合查詢條件 where 1=1 效率數據庫

通常不會影響效率,會自動優化優化

固然也可替換:ui

bool hasWhere = false; 
StringBuilder strSql = new StringBuilder();
 strSql.Append("select * FROM dt_users_log  ");
        if (txtUserID.Text.Trim() != string.Empty)
        {
            hasWhere = AppendWhere(strSql, hasWhere);
            strSql.Append("user_name=@user_id ");
        }
        if (DatePicker1.Text.Trim() != string.Empty && DatePicker2.Text.Trim() != string.Empty)
        {
            hasWhere = AppendWhere(strSql, hasWhere);
            strSql.Append("login_time between @start_time and @end_time ");
        }

private bool AppendWhere(StringBuilder sb, bool hasWhere)
    {
        if (!hasWhere)
        {
            hasWhere = true;
            sb.Append("where ");
            return hasWhere;
        }
        else
        {
            hasWhere = false;
            sb.Append("and ");
            return hasWhere;
        }
    }

 3.批量插入spa

declare @startTime datetime
declare @idx int
set @idx = 1
set @startTime = GETDATE()
 
while @idx  < 18
begin
    insert into TTest01(c1, c2, C3) select C1,C2,c3  from TTest01
    set @idx = @idx + 1
end
print datediff(ms, @startTime, GETDATE())

 4.清理日誌 收縮mdf ldf 文件翻譯

sql server 200五、2008清理數據庫日誌代理

USE 數據庫名
ALTER DATABASE 數據庫名 SET RECOVERY SIMPLE
ALTER DATABASE 數據庫名 SET RECOVERY FULL
DBCC SHRINKDATABASE(數據庫名,0)
這個查詢語句能夠隨時執行,不影響數據庫的運行。
清理ldf的操做能夠使用sql server代理,天天自動執行一次,就不怕文件增加撐爆硬盤了。
通常mdf用不着收縮,收縮多了容易產生文件碎片,由於delete數據以後,mdf文件中可用頁面空間會保留在那裏,等下次有新數據進來時,會繼續使用。若是實在要清理,能夠參考下面的語句:
sql server 2000、200五、2008 收縮mdf文件
DBCC SHRINKDATABASE(數據庫名)
DBCC SHRINKFILE(1,0)
DBCC UPDATEUSAGE(0)
執行上述操做後,你會發現mdf的文件減小了,ldf的文件增大了,再用上面1的日誌清理操做一次便可。
相關文章
相關標籤/搜索