涉及到数据库拆分,需要将相关表的JOIN SQL剥离。

剥离过程中,发现了这么个SQL XML。整个SQL 974 行,分为6个函数。读起来费劲无比。 

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="VisitStatisticsDao">
<resultMap id="visitStatisticsResult" type="com.qunar.hotel.crm.dto.VisitStatisticsResult"/> <sql id="timeRange">
<![CDATA[
visit.visit_date >= #{dateFrom} ]]>
and
<![CDATA[ visit.visit_date <= #{dateTo} ]]>
</sql> <sql id="validState">
and
visit.valid = 1
</sql> <sql id="conditionOfSort">
<choose>
<when test="orderBy == 'byDoorVisited'">
and visit.visit_type = 2
</when>
<when test="orderBy == 'KPVisited'">
and visit.is_active = 0
</when>
<when test="orderBy == 'byDoorKPVisited'">
and visit.is_active = 0 and visit.visit_type =2
</when>
<when test="orderBy == 'revisited'">
and visit.revisit_valid = 1
</when>
</choose>
</sql> <sql id="statisticAttribute">
total_count.visit_count as totalVisited,
by_door_count.visit_count as byDoorVisited,
kp_count.visit_count as KPVisited,
by_door_kp_count.visit_count as byDoorKPVisited,
by_valid_revisit_count.visit_count as revisited
</sql> <sql id="order">
<choose>
<when test="orderBy == 'totalVisited'">
totalVisited
</when>
<when test="orderBy == 'byDoorVisited'">
byDoorVisited
</when>
<when test="orderBy == 'KPVisited'">
KPVisited
</when>
<when test="orderBy == 'byDoorKPVisited'">
byDoorKPVisited
</when>
<when test="orderBy == 'revisited'">
revisited
</when>
<otherwise>
totalVisited
</otherwise>
</choose>
<choose>
<when test="orderType == 'asc'">
asc
</when>
<otherwise>
desc
</otherwise>
</choose>
</sql> <sql id="parent">
(select
`id`,
`name`,
`tree_code`,
`org_type`
from qadmin_org org
where org_type = #{dimension}
and org.tree_code like concat((select tree_code from qadmin_org where id = #{groupId}), '%')
)
parent
</sql> <sql id="orgVisitRecord">
qadmin_org org
left join
qadmin_user user
on org.id = user.org_id
inner join
crm_visit_record visit
on user.user_id = visit.user_id
where
<include refid="timeRange"/>
<include refid="validState"/>
</sql> <sql id="bdTotalCount">
(select
count(visit.id) visit_count,
user.user_id user_id,
user.realname real_name
from
qadmin_org org
inner join
qadmin_user user on user.org_id = org.id
left join
(select id, user_id from
crm_visit_record visit
where
<include refid="timeRange"/>
<include refid="validState"/>
)
visit
on visit.user_id = user.user_id
where
org.tree_code like concat((select tree_code from qadmin_org where id=#{groupId}), '%')
group by
user.user_id
)
</sql> <sql id="bdByDoorCount">
(select
count(visit.id) visit_count,
user.user_id user_id,
user.realname real_name
from
qadmin_org org
inner join
qadmin_user user on user.org_id = org.id
left join
(select id, user_id from
crm_visit_record visit
where
<include refid="timeRange"/>
and
visit_type = 2
<include refid="validState"/>
)
visit on visit.user_id = user.user_id
where
org.tree_code like concat((select tree_code from qadmin_org where id=#{groupId}), '%')
group by
user.user_id
)
</sql> <sql id="bdKPCount">
(select
count(visit.id) visit_count,
user.user_id user_id,
user.realname real_name
from
qadmin_org org
inner join
qadmin_user user on user.org_id = org.id
left join
(select id, user_id from
crm_visit_record visit
where
<include refid="timeRange"/>
and
is_active = 0
<include refid="validState"/>
)
visit on visit.user_id = user.user_id
where
org.tree_code like concat((select tree_code from qadmin_org where id=#{groupId}), '%')
group by
user.user_id
)
</sql> <sql id="bdKPByDoorCount">
(select
count(visit.id) visit_count,
user.user_id user_id,
user.realname real_name
from
qadmin_org org
inner join
qadmin_user user on user.org_id = org.id
left join
(select id, user_id from
crm_visit_record visit
where
<include refid="timeRange"/>
and
is_active = 0
and
visit_type = 2
<include refid="validState"/>
)
visit on visit.user_id = user.user_id
where
org.tree_code like concat((select tree_code from qadmin_org where id=#{groupId}), '%')
group by
user.user_id
)
</sql> <sql id="RevisitValidCount">
(
select
count(visit.id) visit_count,
user.user_id user_id,
user.realname real_name
from
qadmin_org org
inner join
qadmin_user user on user.org_id = org.id
left join
(select id, user_id from crm_visit_record visit
where
<include refid="timeRange"/>
<include refid="validState"/>
and
revisit_valid = 1
)
visit on visit.user_id = user.user_id
where
org.tree_code like concat((select tree_code from qadmin_org where id=#{groupId}), '%')
group by
user.user_id
)
</sql> <sql id="queryBDVisitedCountInMultiGroupTotal">
(
select
org.id as 'id',
org.user_id as 'user_id',
org.sub_realname as 'name',
visit.visit_count as 'visit_count'
from
(
select
sub.id as 'id',
sub.user_id as 'user_id',
sub.realname as 'sub_realname'
from
(select id, name, tree_code from qadmin_org)
parent
left join
(select
org.name,
org.tree_code,
user.id as 'id',
user.user_id as 'user_id',
user.realname
from
qadmin_org
org
inner join
qadmin_user user
on user.org_id = org.id
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
org
left join
(
select
count(visit.id) as 'visit_count',
user.user_id as 'user_id'
from
crm_visit_record visit
left join
qadmin_user user
on
visit.user_id = user.user_id
where
<include refid="timeRange"/>
<include refid="validState"/>
group by
user.user_id
)
visit
on org.user_id = visit.user_id
)
</sql> <sql id="queryBDVisitedCountInMultiGroupByDoor">
(
select
org.id as 'id',
org.user_id as 'user_id',
org.sub_realname as 'name',
visit.visit_count as 'visit_count'
from
(
select
sub.id as 'id',
sub.user_id as 'user_id',
sub.realname as 'sub_realname'
from
(select id, name, tree_code from qadmin_org)
parent
left join
(select
org.name,
org.tree_code,
user.id as 'id',
user.user_id as 'user_id',
user.realname
from
qadmin_org
org
inner join
qadmin_user user
on user.org_id = org.id
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
org
left join
(
select
count(visit.id) as 'visit_count',
user.user_id as 'user_id'
from
crm_visit_record visit
left join
qadmin_user user
on
visit.user_id = user.user_id
where
<include refid="timeRange"/>
and
visit.visit_type = 2
<include refid="validState"/>
group by
user.user_id
)
visit
on org.user_id = visit.user_id
)
</sql> <sql id="queryBDVisitedCountInMultiGroupByKPVisit">
(
select
org.id as 'id',
org.user_id as 'user_id',
org.sub_realname as 'name',
visit.visit_count as 'visit_count'
from
(
select
sub.id as 'id',
sub.user_id as 'user_id',
sub.realname as 'sub_realname'
from
(select id, name, tree_code from qadmin_org)
parent
left join
(
select
org.name,
org.tree_code,
user.id as 'id',
user.user_id as 'user_id',
user.realname
from
qadmin_org
org
inner join
qadmin_user
user
on user.org_id = org.id
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
org
left join
(
select
count(visit.id) as 'visit_count',
user.user_id as 'user_id'
from
crm_visit_record visit
left join
qadmin_user user
on
visit.user_id = user.user_id
where
<include refid="timeRange"/>
and
visit.is_active = 0
<include refid="validState"/>
group by
user.user_id
)
visit
on org.user_id = visit.user_id
)
</sql> <sql id="queryBDVisitedCountInMultiGroupByKPDoorVisit">
(
select
org.id as 'id',
org.user_id as 'user_id',
org.sub_realname as 'name',
visit.visit_count as 'visit_count'
from
(
select
sub.id as 'id',
sub.user_id as 'user_id',
sub.realname as 'sub_realname'
from
(select id, name, tree_code from qadmin_org)
parent
left join
(
select
org.name,
org.tree_code,
user.id as 'id',
user.user_id as 'user_id',
user.realname
from
qadmin_org
org
inner join
qadmin_user
user
on user.org_id = org.id
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
org
left join
(
select
count(visit.id) as 'visit_count',
user.user_id as 'user_id'
from
crm_visit_record visit
left join
qadmin_user user
on
visit.user_id = user.user_id
where
<include refid="timeRange"/>
and
visit.is_active = 0
and
visit.visit_type = 2
<include refid="validState"/>
group by
user.user_id
)
visit
on org.user_id = visit.user_id
)
</sql> <sql id="queryBDVisitedCountInMultiGroupByValidRevisit">
(
select
org.id as 'id',
org.user_id as 'user_id',
org.sub_realname as 'name',
visit.visit_count as 'visit_count'
from
(
select
sub.id as 'id',
sub.user_id as 'user_id',
sub.realname as 'sub_realname'
from
(select id, name, tree_code from qadmin_org)
parent
left join
(
select
org.name,
org.tree_code,
user.id as 'id',
user.user_id as 'user_id',
user.realname
from
qadmin_org
org
inner join
qadmin_user
user
on user.org_id = org.id
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
org
left join
(
select
count(visit.id) as 'visit_count',
user.user_id as 'user_id'
from
crm_visit_record visit
left join
qadmin_user user
on
visit.user_id = user.user_id
where
<include refid="timeRange"/>
and
visit.revisit_valid = 1
<include refid="validState"/>
group by
user.user_id
)
visit
on org.user_id = visit.user_id
)
</sql> <select id="querySortedBDVisitStatistics" parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition" resultType="string">
select user_id from
(
select
visit.user_id as 'user_id',
visit.visit_count as 'visit_count'
from
(
select
sub.user_id as 'user_id'
from
(select id, tree_code from qadmin_org)
parent
left join
(
select
org.tree_code as 'tree_code',
user.user_id as 'user_id'
from
qadmin_org
org
inner join
qadmin_user user
on user.org_id = org.id
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
user
left join
(
select
count(visit.id) as 'visit_count',
user_id
from crm_visit_record visit
where
<include refid="timeRange"/>
<include refid="validState"/>
<include refid="conditionOfSort"/>
group by user_id
)
visit
on user.user_id = visit.user_id
order by visit_count
<choose>
<when test="orderType == 'asc'">
asc
</when>
<otherwise>
desc
</otherwise>
</choose>
)temp </select> <select id="queryBDVisitedCount" resultMap="visitStatisticsResult"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition"
fetchSize="100" resultSetType="FORWARD_ONLY">
select
total_count.user_id as groupId,
total_count.real_name as name,
<include refid="statisticAttribute"/>
from <include refid="bdTotalCount"/>
total_count
left join
<include refid="bdByDoorCount"/>
by_door_count
on total_count.user_id = by_door_count.user_id
left join
<include refid="bdKPCount"/>
kp_count
on total_count.user_id = kp_count.user_id
left join
<include refid="bdKPByDoorCount"/>
by_door_kp_count
on total_count.user_id = by_door_kp_count.user_id
left join
<include refid="RevisitValidCount"/>
by_valid_revisit_count
on total_count.user_id = by_valid_revisit_count.user_id
order by
<include refid="order"/>
</select> <select id="queryOrgVisitedCount" resultMap="visitStatisticsResult"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition"
fetchSize="100" resultSetType="FORWARD_ONLY">
select
total_count.parent_id as 'groupId',
total_count.parent_name as 'name',
<include refid="statisticAttribute"/>
from
(
select
parent.id as 'parent_id',
parent.name as 'parent_name',
count(sub.visit_id) as 'visit_count'
from
<include refid="parent"/>
left join
(select
org.tree_code as 'tree_code',
visit.id as 'visit_id'
from
<include refid="orgVisitRecord"/>
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
group by parent.id)
total_count
left join
(
select
parent.id as 'parent_id',
parent.name as 'parent_name',
count(sub.visit_id) as 'visit_count'
from
<include refid="parent"/>
left join
(select
org.tree_code as 'tree_code',
visit.id as 'visit_id'
from
<include refid="orgVisitRecord"/>
and visit.visit_type = 2
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
group by parent.id)
by_door_count
on total_count.parent_id = by_door_count.parent_id
left join
(
select
parent.id as 'parent_id',
parent.name as 'parent_name',
count(sub.visit_id) as 'visit_count'
from
<include refid="parent"/>
left join
(select
org.tree_code as 'tree_code',
visit.id as 'visit_id'
from
<include refid="orgVisitRecord"/>
and visit.is_active = 0
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
group by parent.id)
kp_count
on total_count.parent_id = kp_count.parent_id
left join
(
select
parent.id as 'parent_id',
parent.name as 'parent_name',
count(sub.visit_id) as 'visit_count'
from
<include refid="parent"/>
left join
(select
org.tree_code as 'tree_code',
visit.id as 'visit_id'
from
<include refid="orgVisitRecord"/>
and visit.is_active = 0
and visit.visit_type = 2
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
group by parent.id)
kp_by_door_count
on total_count.parent_id = kp_by_door_count.parent_id
left join
(
select
parent.id as 'parent_id',
parent.name as 'parent_name',
count(sub.visit_id) as 'visit_count'
from
<include refid="parent"/>
left join
(
select
org.tree_code as 'tree_code',
visit.id as 'visit_id'
from
<include refid="orgVisitRecord"/>
and visit.revisit_valid = 1
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
group by parent.id
)
by_valid_revisit_count
on total_count.parent_id = by_valid_revisit_count.parent_id
order by
<include refid="order"/>
</select> <select id="querySingleBDVisitedCount" resultMap="visitStatisticsResult"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition">
select
total_count.user_id as groupId,
total_count.name as name,
<include refid="statisticAttribute"/>
from
(
select
count(visit.id) as visit_count,
user.user_id as user_id,
user.realname as name
from
qadmin_user user
left join
crm_visit_record visit
on user.user_id = visit.user_id
where
user.user_id = #{groupId}
and
<include refid="timeRange"/>
<include refid="validState"/>
)
total_count
left join
(
select
count(visit.id) as visit_count,
user.user_id as user_id,
user.realname as name
from
qadmin_user user
left join
crm_visit_record visit
on user.user_id = visit.user_id
where
user.user_id = #{groupId}
and
<include refid="timeRange"/>
<include refid="validState"/>
and
visit.visit_type = 2
)
by_door_count
on total_count.user_id = by_door_count.user_id
left join
(
select
count(visit.id) as visit_count,
user.user_id as user_id,
user.realname as name
from
qadmin_user user
left join
crm_visit_record visit
on user.user_id = visit.user_id
where
user.user_id = #{groupId}
and
<include refid="timeRange"/>
<include refid="validState"/>
and
visit.is_active = 0
)
kp_count
on total_count.user_id = kp_count.user_id
left join
(
select
count(visit.id) as visit_count,
user.user_id as user_id,
user.realname as name
from
qadmin_user user
left join
crm_visit_record visit
on user.user_id = visit.user_id
where
user.user_id = #{groupId}
and
<include refid="timeRange"/>
<include refid="validState"/>
and
visit.is_active = 0
and
visit.visit_type = 2
)
by_door_kp_count
on total_count.user_id = by_door_kp_count.user_id
left join
(
select
count(visit.id) as visit_count,
user.user_id as user_id,
user.realname as name
from
qadmin_user user
left join
crm_visit_record visit
on user.user_id = visit.user_id
where
user.user_id = #{groupId}
and
<include refid="timeRange"/>
<include refid="validState"/>
and
visit.revisit_valid = 1 )
by_valid_revisit_count
on total_count.user_id = by_valid_revisit_count.user_id </select> <select id="queryBDVisitedCountInMultiGroup" resultMap="visitStatisticsResult"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition"
fetchSize="100" resultSetType="FORWARD_ONLY">
select
total_count.user_id as 'groupId',
total_count.name as 'name',
<include refid="statisticAttribute"/>
from
<include refid="queryBDVisitedCountInMultiGroupTotal"/>
total_count
left join
<include refid="queryBDVisitedCountInMultiGroupByDoor"/>
by_door_count
on
total_count.user_id = by_door_count.user_id
left join
<include refid="queryBDVisitedCountInMultiGroupByKPVisit"/>
kp_count
on total_count.user_id = kp_count.user_id
left join
<include refid="queryBDVisitedCountInMultiGroupByKPDoorVisit"/>
by_door_kp_count
on total_count.user_id = by_door_kp_count.user_id
left join
<include refid="queryBDVisitedCountInMultiGroupByValidRevisit"/>
by_valid_revisit_count
on total_count.user_id = by_valid_revisit_count.user_id
group by total_count.user_id
order by
<include refid="order"/>
</select> <select id="queryBDVisitedRecordSize" resultType="int"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition">
select count(distinct sub.user_id) from
(select id, tree_code from qadmin_org)
parent
left join
(select
org.tree_code as 'tree_code',
`user`.id as 'user_id'
from
qadmin_org org left join
qadmin_user `user`
on `user`.org_id = org.id)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id = #{groupId};
</select> <select id="queryOrgVisitedRecordSize" resultType="int"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition">
select count(sub.id) from
(select
name,
id,
org_type,
tree_code
from qadmin_org where id = #{groupId})
parent
left join
(select
name,
id,
org_type,
tree_code
from qadmin_org where org_type = #{dimension})
sub
on sub.tree_code like concat(parent.tree_code, '%');
</select> <select id="queryBDVisitedInMultiGroupRecordSize" resultType="int"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition">
select
count(sub.id)
from
(select id, name, tree_code from qadmin_org)
parent
left join
(select
org.name,
org.tree_code,
user.id,
user.realname
from
qadmin_org org inner join
qadmin_user user
on user.org_id = org.id)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select> </mapper>

花费了半天的分析后,重构代码,SQL压缩为96行

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qunar.scm.visit.dao.VisitStatisticsDao">
<resultMap id="visitStatisticsResult" type="com.qunar.scm.visit.model.vo.VisitStatisticsResult"/> <sql id="order">
<choose>
<when test="orderBy == 'totalVisited'">
totalVisited
</when>
<when test="orderBy == 'byDoorVisited'">
byDoorVisited
</when>
<when test="orderBy == 'KPVisited'">
KPVisited
</when>
<when test="orderBy == 'byDoorKPVisited'">
byDoorKPVisited
</when>
<when test="orderBy == 'revisited'">
revisited
</when>
<otherwise>
totalVisited
</otherwise>
</choose>
<choose>
<when test="orderType == 'asc'">
asc
</when>
<otherwise>
desc
</otherwise>
</choose>
</sql> <sql id="where">
<where>
visit.visit_date >= #{dateFrom} and #{dateTo} >= visit.visit_date
and visit.valid = 1
<if test="userId != null and userId != '' ">
and user_id = #{userId}
</if>
<if test="orgTreeCodes != null and orgTreeCodes.size >0 ">
AND
<foreach collection="orgTreeCodes" item="treeCode" open="(" close=")" separator="or">
org_tree_code like '${treeCode}%'
</foreach>
</if>
</where>
</sql> <sql id="column">
user_id as 'groupId',
count(1) as totalVisited,
sum(case when visit.visit_type =2 then 1 else 0 end) as byDoorVisited,
sum(case when visit.is_active = 0 then 1 else 0 end) as KPVisited,
sum(case when visit.is_active = 0 and visit.visit_type =2 then 1 else 0 end) as byDoorKPVisited,
sum(case when visit.revisit_valid = 1 then 1 else 0 end) as revisited,
sum(case when (visit.visit_purpose_type = '1' or visit.visit_purpose_type='1#2') then 1 else 0 end) as visitforSignCount,
sum(case when (visit.visit_purpose_type = '2' or visit.visit_purpose_type='1#2') then 1 else 0 end) as visitforMantainceCount
</sql> <select id="queryBDVisitedCountInMultiGroupWithRowHandler" resultMap="visitStatisticsResult"
parameterType="com.qunar.scm.visit.model.condition.VisitStatisticsCondition"
fetchSize="100" resultSetType="FORWARD_ONLY">
select
<include refid="column"/>
from crm_visit_record visit
<include refid="where"/>
group by user_id
order by
<include refid="order"/>
</select> <select id="queryBDVisitedCountInMultiGroup" resultMap="visitStatisticsResult"
parameterType="com.qunar.scm.visit.model.condition.VisitStatisticsCondition">
select
<include refid="column"/>
from crm_visit_record visit
<include refid="where"/>
group by user_id
order by
<include refid="order"/>
</select> <select id="queryBDVisitedInMultiGroupRecordSize" resultType="int"
parameterType="com.qunar.scm.visit.model.condition.VisitStatisticsCondition">
select
count(distinct user_id)
from crm_visit_record visit
<include refid="where"/>
</select> </mapper>

简要分析:

整个SQL分类:

1 6个函数,count 3个,select list 3个,where条件分别为查单独一个人,查一个组织。6个函数完全可以压缩为2个函数。

2 原SQL原理
先生成多个统计指标的temp表,然后使用uid进行left join

select count(1) from A where W1
left join
select count(1) from A where W2
left join
select count(1) from A where W3
order by XXXXX

换一种思路 使用CASE WHEN代替即可

select
SUM(case when W1 then 1 else 0 end),
SUM(case when W2 then 1 else 0 end),
SUM(case when W3 then 1 else 0 end)
FROM A
ORDER BY XXXX

挫代码处处有,也许一开始是不挫的,随着一代代不加思考叠加,最终就成了没法维护的代码。所以,对于Coding,无论何时,保持一个谨慎的态度。

一段SQL代码的压缩:从974行到96行,十倍压缩的更多相关文章

  1. thinkphp5, 结合pgsql使用时, 要先运行这段sql代码

    按照tp5的官方文档的说法, 必须这么做: 先执行一段sql代码 CREATE OR REPLACE FUNCTION pgsql_type(a_type varchar) RETURNS varch ...

  2. 一段SQL代码

    begin transaction set quoted_identifier on set arithabort on set numeric_roundabort off set concat_n ...

  3. 探究SQL添加非聚集索引,性能提高几十倍之谜

    上周,技术支持反映:客户的一个查询操作需要耗时6.1min左右,在跟进代码后,简化了数据库的查询后仍然收效甚微.后来,技术总监分析了sql后,给其中的一个表添加的一个非聚集索引(三个字段)后,同样的查 ...

  4. 评《撸一段 SQL ? 还是撸一段代码? 》

    最近看到一篇博客<撸一段 SQL ? 还是撸一段代码?>,文章举例说明了一个连表查询使用程序code来写可读性可维护性更好,但是回帖意见不一致,我想作者在理论层面没有做出更好的论述,而我今 ...

  5. 撸一段 SQL ? 还是撸一段代码?

    记得刚入公司带我的研发哥们能写一手漂亮的 SQL,搜索准确.执行快.效率高. 配合Web项目中的查询展示数据的需求,基本是分分钟完成任务. 那段时间基本是仰视的态度,每天都去讨教一点手写 SQL 的要 ...

  6. 一段完整的创建表格的SQL代码

    一段完整的创建表格的SQL代码 使用SQL语句创建一张表,不仅可以可以快速熟悉SQL语句,还可以从这看出一个人对该技能点的熟悉程度. 这里先说明几点: PRIMARY KEY:主键,一张表中只允许有一 ...

  7. c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询

    天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. ​ ​不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...

  8. 刷新SQL Server所有视图、函数、存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 [SQL]代码 --视图、存储过程、函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FO

    刷新SQL Server所有视图.函数.存储过程 更多   sql   此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...

  9. C# 一段绘图代码 在form_load事件不能显示图

    今天无意将一段绘图代码 写在form_load事件了,结果不能显示绘图.(代码:Graphics g = this.CreateGraphics();Pen pen = new Pen(Color.R ...

随机推荐

  1. ASP.NET全局文件与防盗链

    添加Web→全局应用程序类,注 文件名不要改 Global.asax 全局文件是对Web应用声明周期的一个事件响应的地方,将Web应用启动时初始化的一些代码写到 Application_Start中, ...

  2. 今天收到报警邮件,提示网站502 bad gateway,

    今天收到报警邮件,提示网站502 bad gateway, 输入网站url后果然无法打开: 登录服务器查看nginx进程正常: 查看fastcGI进程已经停止运行了: 问题找到后就该查找是什么原因产生 ...

  3. if参数小结

    条件表达式 if [ -f  file ]    如果文件存在 if [ -d ...   ]    如果目录存在 if [ -s file  ]    如果文件存在且非空 if [ -r file  ...

  4. Shell数组

    #!/bin/bash#数组的使用#数组赋值方式:#1. user[index]=value index为0,1,2,3,4....数组下标值#2. user=(value0 value1 value ...

  5. AAABBBBCCCC

    语单词词性简写语的意义:,n. 名词 ,noun的缩写v. 动词 , verb的缩写pron. 代词 , pronoun的缩写adj. 形容词, adjective的缩写adv. 副词, adverb ...

  6. 双积分式(A/D)转换器电路结构及工作原理

    1.转换方式 V-T型间接转换ADC. 2.  电路结构 图1是这种转换器的原理电路,它由积分器(由集成运放A组成).过零比较器(C).时钟脉冲控制门(G)和计数器(ff0-ffn)等几部分组成 图1 ...

  7. bootstrap框架应用

    ---------------------------------------------------------------bootstrap---------------------------- ...

  8. front-end

    http://info.1688.com/detail/1139720782.html http://segmentfault.com/q/1010000000136513 http://h5apps ...

  9. 一周一话题之三(Windows服务、批处理项目实战)

    -->目录导航 一. Windows服务 1. windows service介绍 2. 使用步骤 3. 项目实例--数据上传下载服务 二. 批处理运用 1. 批处理介绍 2. 基本语法 3. ...

  10. VisualStudio替换所有空行

    [一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/3371620.html] Ctrl+Shift+H 查找内容\r\n\r\n   //如果要替换 ...