『壹』 一個復雜查詢,我是用一個復雜sql完成,還是分成多個小sql完成好,原因
如果很復雜,那就用存儲過程;每次運行sql,資料庫都要解析該sql,存儲過程就省去了這個解析的步驟;如果sql很復雜,那麼在存儲過程內拼sql字元串也是挺折磨人的...
至於是不是分成多個小sql,如果你已經把那個復雜sql寫出來了,我想就沒必要分開寫了.我都是復雜sql搞不定被逼無奈才分開寫的o(╯□╰)o
『貳』 如何將一個大的SQL數據文件拆分成多個文件進行保存
點右鍵 然後點擊壓縮文件 就可以壓縮到 指定的地方
『叄』 如何將sql資料庫文件分割
利用軟體:「SQLDumpSplitter.exe」
將導出的數據備份文件切割,可以自定義每個文件的大小,這個軟體有一個好處是不會把每條記錄分開,保證了每條記錄的完整性,但是如果一個表中插入的數據較多,那麼會把插入操作分成好幾個,放在不同的小文件當中。
所以如果導入過程當中遇到 data node 參數需要改動的問題時,首先得刪除表記錄,再重新導,不免會出現重復記錄的情況。
SQLDumpSplitter在切割數據文件的同時會把資料庫表結構也獨立保存起來,方便進行資料庫初始化操作。
『肆』 怎麼把這樣長的sql語句拆分為單條sql語句,這種語句是通過工具生成的還是手動拼出來的
SELECTu.userid,u.name,u.phone
fromhx_useru
LEFTJOIN(SELECT*
fromhx_userrest
WHEREuserrestdate='".$orderhead['serverdate']."')r
onu.userid!=r.userid
INNERJOIN(SELECTuserid
from(SELECTuserid,GROUP_CONCAT(infovaluename)user_info
fromhx_userattrGROUPBYuserid)a
INNERJOIN(SELECTGROUP_CONCAT('%',infovaluename,'%')order_info
fromhx_orderneedinfo
whereorderheadid=$orderheadidandinfokeyperson=2)b
ona.user_infoLIKEIFNULL(b.order_info,'%'))d
onu.userid=d.userid
INNERJOIN(SELECT*
fromhx_userproctclass
WHEREproctclassid=".$orderhead['proctclassid'].")f
onf.userid=u.userid
LEFTJOINhx_sendareasa
onu.userid=sa.userid
WHEREu.useridNOTin(SELECTou.userid
fromhx_servertimes1
INNERJOIN(SELECT*
fromhx_servertime
whereservertimevalue='".$orderhead['servertime']."')s2
ON(s1.ordernum=s2.ordernum-1)or(s1.ordernum=s2.ordernum+1)
INNERJOIN(SELECT*
fromhx_orderhead
whereserverdate='".$orderhead['serverdate']."')h
onh.servertime=s1.servertimevalue
INNERJOINhx_order_userou
onou.orderheadid=h.orderheadid)
ANDusertype=1
ORDERBYabs(fun_getdistance(".$orderhead['latitude'].",".$orderhead['longitude'].",sa.latitude,sa.longitude))ASC,levelDESClimit$limitStart,$pagesize
稍微整理了一下,拆分是不好拆分的,這段語句都是用的子查詢和連接查詢,操作的表比較多,至於你說的手動拼還是用工具這個就不清楚了
『伍』 php框架中多表查詢sql語句時拆分查詢好還是一次性的好
個人建議還是拆分的比較好,一次查詢雖然寫法上可能會省代碼,但是效率就很低下,因為即使加了索引,而在你聯合查詢 的時候語句寫的不當就會導致索引不生效,從而效率就會下降。相反拆分或者單表操作,雖然寫起來看著繁瑣,但是邏輯清晰,而且效率會提高。不過也要看情況,如果索引設計的好,一條語句出來也不是不可以的
『陸』 關於sql欄位拆分的問題
先增加「收方」、「付方」兩個欄位,然後用update語句進行更新,如:
update tab set 收方='收方' where 收付類型='收'
至於更新的規則,你要按照自己的業務去做,你沒有描述,我不知道怎麼回答。
『柒』 sql語句 拆分
select 這個地方就是查詢的欄位,然後IP是自定義的名字 'IP'=substring(拆分的欄位名,b.number,charindex('拆分的符號',拆分的欄位名+',',b.number)-b.number) from 你的表名 a
inner join master.dbo.spt_values b on b.number between 1 and len(拆分的欄位名)
and substring(','+拆分的欄位名,b.number,1)='拆分的符號'
where b.type='P' 後邊可以是條件 and Id=1
『捌』 sql 拆分欄位問題
標註:網上大神寫的
SELECT
substring(JGZID,patindex('%[^0-9][0-9]%',JGZID)+1,patindex('%[0-9][^0-9]%',JGZID)-patindex('%[^0-9][0-9]%',JGZID))AS JGZBH FROM dbo.Table_1
你試試
『玖』 mysql用分庫分表後還需要寫復雜的SQL語句嗎
肯定需要啊,分庫分表是把大表拆分成小表,但是表之間的關聯變多了。
『拾』 php資料庫用一個sql取數據還是多個sql分開取數據好
php使用的資料庫一般是mysql,當數據量大於1000萬時,為了效率最好還會進行分表存儲。
這要看你應用在什麼場合了,如果只是單純的數據處理,不需要取出來使用的話,可以直接在資料庫里操作,比如建十張表,根據特徵把1000萬條數據插入到不同的表裡。如insert into table_1 select * from table。
如果要取出來使用的話,建議寫執行腳本,在資料庫空閑時(如零點之後)執行該腳本,將處理的結果保存在另外一張表裡,再從這張表裡獲取想要的結果。