一段SQL代码的压缩:从974行到96行,十倍压缩
涉及到数据库拆分,需要将相关表的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行,十倍压缩的更多相关文章
- thinkphp5, 结合pgsql使用时, 要先运行这段sql代码
按照tp5的官方文档的说法, 必须这么做: 先执行一段sql代码 CREATE OR REPLACE FUNCTION pgsql_type(a_type varchar) RETURNS varch ...
- 一段SQL代码
begin transaction set quoted_identifier on set arithabort on set numeric_roundabort off set concat_n ...
- 探究SQL添加非聚集索引,性能提高几十倍之谜
上周,技术支持反映:客户的一个查询操作需要耗时6.1min左右,在跟进代码后,简化了数据库的查询后仍然收效甚微.后来,技术总监分析了sql后,给其中的一个表添加的一个非聚集索引(三个字段)后,同样的查 ...
- 评《撸一段 SQL ? 还是撸一段代码? 》
最近看到一篇博客<撸一段 SQL ? 还是撸一段代码?>,文章举例说明了一个连表查询使用程序code来写可读性可维护性更好,但是回帖意见不一致,我想作者在理论层面没有做出更好的论述,而我今 ...
- 撸一段 SQL ? 还是撸一段代码?
记得刚入公司带我的研发哥们能写一手漂亮的 SQL,搜索准确.执行快.效率高. 配合Web项目中的查询展示数据的需求,基本是分分钟完成任务. 那段时间基本是仰视的态度,每天都去讨教一点手写 SQL 的要 ...
- 一段完整的创建表格的SQL代码
一段完整的创建表格的SQL代码 使用SQL语句创建一张表,不仅可以可以快速熟悉SQL语句,还可以从这看出一个人对该技能点的熟悉程度. 这里先说明几点: PRIMARY KEY:主键,一张表中只允许有一 ...
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. 不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...
- 刷新SQL Server所有视图、函数、存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 [SQL]代码 --视图、存储过程、函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FO
刷新SQL Server所有视图.函数.存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...
- C# 一段绘图代码 在form_load事件不能显示图
今天无意将一段绘图代码 写在form_load事件了,结果不能显示绘图.(代码:Graphics g = this.CreateGraphics();Pen pen = new Pen(Color.R ...
随机推荐
- 【实习记】2014-08-27堆排序理解总结+使用typedef指代函数指针
过程记录 4个月前C语言版的七大排序算法实践让我在写C++版时轻车熟路.特别是冒泡,插入,希尔,选择这四种排序不用调试即运行成功.输出的效果与C语言做的版本完全一样,其中令我印象深刻的是,co ...
- 如何设置 font-family 比较好以及字体的中英文名
如何设置 font-family 比较好? 如果设置为font-family: Arial, "微软雅黑","宋体"; 是不是英文都会使用Arial字体,而中文 ...
- jQuery学习 day01
最近受某大牛指点(我不会说他姓范),了解了一下jQuery,据说很牛X,就了解了一下,第一天,分享给大家一些心得吧. 1.首先就是导入jQuery文件了,这里我是去jQuery官网下载的.(大家可以去 ...
- thinkphp给图片打水印不清晰
项目中打印条形码的函数,从thinkphp自带的water函数修改而来的. 贴上代码: /** * water2 * 改写thinkphp的water函数更强健的函数,增加了写入位置参数 去掉了alp ...
- jquery mobile页面跳转后,必须重新刷新页面js方可有效
最近在做个项目,用到jquery mobile,很陌生对他,问题一个个的来,那就要一个个解决,找了一天这个问题,放可明白:首先明白jqm里面页面跳转默认都是通过ajax请求的,必须重新刷新页面js方可 ...
- 如何在Win10中启用和关闭管理员账户?
和Win7/Win8.1一样,Win10的管理员账户Administrator是默认隐藏和关闭的,因为该账户权限极高,被不法分子利用后存在极大风险.但如果你想在某些特殊情况下使用该账户,就需要手动将其 ...
- myeclipse使用SVN团队开发
很多时候我们做项目都是已一个团队一起开发,所以我们可以选择SVN开发工具. 一:了解SVN的使用流程: 1).有一个服务端,他可以在上面添加一个项目,添加成员 2).myeclipse需要安装svn的 ...
- iOS 静态库中使用宏定义区分iPhone模拟器与真机---备用
问题描述 一般项目中,可以使用宏定义来判断模拟器还是真机,这无疑是有效的. #if TARGET_IPHONE_SIMULATOR #define SIMULATOR 1 #elif TARGET_O ...
- REST响应处理
JAX-RS 2.0 支持4种返回值类型的响应,分别是无返回值.返回Response类实例.返回GenericEntity类实例和返回自定义类实例. 1.在返回值类型是VOID的响应中,其响应实体为空 ...
- 【2011 Greater New York Regional 】Problem H: Maximum in the Cycle of 1
也是一个数学题: 主要用到的是排列组合的知识,推推公式就行了,挺简单的: 唯一要注意的是A(0,0)=1: 在这个上面WA了几次,= = 代码: #include<stdio.h> #de ...