good article URL link:
http://www.dbspecialists.com/files/presentations/semijoins.html
When we want to row_number() over(partition by ) in MYSQL, but
mysql does not exists this function,how to realize it by
SQL?
the sql example as following:
select id,uri,sequence,url_id,rank from (
select tmp.id,tmp.uri,@rownum:=@rownum+1 as
rnum,sequence,url_id,
if(@pid=tmp.id,@rank:=@rank+1,@rank:=1) as rank,
@pid:=tmp.id
from (
select a.id,a.uri,b.sequence,b.url_id from urls a, url_measure
b
where a.id=b.url_id and b.level=1 order by a.id,exec_time
desc
) tmp ,(select @rownum :=0 , @pid :=0 ,@rank:=0) a ) result
where rank=1 limit 0,5
when write the SQL,we want to check the SQL performance,
for example:
1)the SQL can't include select *.
2)the SQL must has certain column.
3)the SQL explain plan must not use full table scan or index
scan.
we can define the rule as following:
<?xml version="1.0" encoding="UTF-8"?>
<rule-execution-set>
<name>daoCheckRules</name>
<description>DAO check Rule Execution
Set</description>
<synonymn name="daoRuleParser"
class="com.database.util.daoRuleParser" />
<rule name="selectStar" description="Check SQL if has
select * " >
<if leftTerm="daoRuleParser.getSql" op="contains"
rightTerm="*" />
<then method="daoRuleParser.setCheckSelectStar"
arg1="true" />
…
このところ、KDEの進化が著しい。先月の終わり頃にKDE 4.6がリリースされたのだが、前回のバージョン4.5は去年の8月だったので、5ヶ月ちょっとでのバージョンアップとなる。KDEは4.5でかなり品質が向上したように思うのだが、4.6では心踊る新機能が目白押しだ。その中で、特に筆者の目を引いた新機能がひとつある。それは、KateSQL(Kate用SQLクライアントプラグイン)だ。
…
[さらに読む]
よくMySQLはサブクエリが弱いと言われるが、これは本当だろうか?半分は本当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。
EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。
- SUBQUERY
- DEPENDENT SUBQUERY
- DERIVED
結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT …