鍍金池/ 問答/ 數(shù)據(jù)庫問答
伴謊 回答

檢查一下數(shù)據(jù)庫編碼,相關(guān)表的字段的編碼,以及連接數(shù)據(jù)庫是使用的編碼是否都是utf-8格式,如下圖:
圖片描述

再有就是你使用的是哪個版本的Python,Python3以后的版本默認(rèn)編碼是utf-8;

任她鬧 回答

查詢條件的順序沒有影響,你舉的兩個查詢都會用上面的索引。有關(guān)的只有創(chuàng)建索引的順序,
{name: 1, domain: 1}{domain: 1, name: 1}是不同的索引

尐懶貓 回答

如果是大表查詢慢,重點(diǎn)是看查詢語句的執(zhí)行計(jì)劃,數(shù)據(jù)庫緩沖池的大小并不是最重要的影響因素。
建議重點(diǎn)排查幾點(diǎn):
1、查詢條件的字段,是否有合適的索引
2、是否關(guān)聯(lián)了過多的表
3、能否去掉不必要的排序操作

尤禮 回答

這是navicat的問題,不是postgresql的問題

navicat 會執(zhí)行某些SQL來獲取數(shù)據(jù)庫的一些基本信息。但是隨著postgresql的升級,某些舊的統(tǒng)計(jì)的數(shù)據(jù)庫或字段已更名或被刪除了。

換pgadmin4吧

真難過 回答

用debugger看一下? 這里看你的create_consumer_user里沒有創(chuàng)建session而是直接就添加了 一旦session被close了需要重新創(chuàng)建

萌二代 回答

.db3看上去是SQLite數(shù)據(jù)庫, SQLite數(shù)據(jù)庫默認(rèn)并不支持regexp, 雖然定義了REGEXP運(yùn)算符. 根據(jù)平臺的不同, 需要通過 不同的方式安裝用戶函數(shù)regexp. 建議看看能不能通過其他方式模糊查詢代替正則表達(dá)式.

參見:

https://stackoverflow.com/que...

離人歸 回答

MySQL的information_schema庫中有個COLUMNS表,里面記錄了mysql所有庫中所有表的字段信息。所以直接根據(jù)這個表的信息查各個表有沒有json這個字段,然后創(chuàng)建即可。

IF NOT EXISTS( SELECT NULL
            FROM INFORMATION_SCHEMA.COLUMNS
           WHERE table_name = 'tablename'
             AND table_schema = 'db_name'
             AND column_name = 'json')  THEN
  ALTER TABLE `TableName` ADD `json` VARCHAR(255) NOT NULL;
END IF;
小曖昧 回答

說不上那個好.
看你數(shù)據(jù)庫數(shù)據(jù)多不多了.
如果數(shù)據(jù)很多,又要求性能,那就一個sql解決問題.
但是一般情況下都會寫在業(yè)務(wù)層.

心夠野 回答

你這是什么邏輯?你是要實(shí)現(xiàn) 2 是否包含在 1,2,3,4,5里面嗎?

歆久 回答

mybatis generator生成的 我看過源碼 是字符串拼接的 然后寫到你配置的目錄

做不到 回答

好好讀一下最后一張圖的提示信息,因?yàn)榘l(fā)生了錯誤已經(jīng)把安裝回滾了。你截圖上面顯示的是在下載MongoDB Compass,這是mongoDB的一個GUI,很可能是下載這個GUI的時候網(wǎng)絡(luò)出現(xiàn)問題導(dǎo)致下載失敗造成的。
可以在安裝的時候配置為不要安裝Compass就行了。

萌吟 回答

--sqlserver親測有效

--語句簡單優(yōu)雅卻又不失功能

--就是性能上可能有些不足


SELECT [subject].Id,COUNT([course].Id) AS course_count,

                    COUNT([book].Id)   AS book_count

FROM [subject],[course],[book]

WHERE [course].Uid=[subject].Id AND [book].Uid=[subject].Id

GROUP BY [subject].Id
還吻 回答

審題

題注的需求描述的不是特別清楚,所以根據(jù)現(xiàn)有的信息我來完整描述下題主的需求。

題主的表: pq_coupon table , 有幾個核心字段 id,status,merchant_id。

題主嘗試的查詢寫法:

$coupon->whereIn('id',$res1['coupon_id'])->where('status',2)->groupBy('merchant_id')->get();

$coupon->whereIn('id',$res1['coupon_id'])->where('status',2) 會找出一批優(yōu)惠券數(shù)據(jù),但是其中 merchant_id 存在很多重復(fù)的值。

所以題主想 每個店鋪下(merchant_id) 只找出一條優(yōu)惠券即可。

不知道是否理解正確,正確了再說解題方法。

祉小皓 回答

可以的啊,參考文檔,改變一下里面的參數(shù)

爛人 回答

存儲過程的優(yōu)點(diǎn)主要包括以下幾點(diǎn):

第一點(diǎn),性能提高。這是相對于不適用存儲過程來說的,因?yàn)榇鎯^程在創(chuàng)建的時候就編譯好了,而后每次調(diào)用都不會再次編譯,這相對于傳統(tǒng)的SQL語句中每次調(diào)用都需要編譯的情況來說,性能提高了何止一點(diǎn)兩點(diǎn)。

第二點(diǎn),重用性強(qiáng)。存儲過程使用名字即可使用,也就是傳說中的“一次編寫,隨便調(diào)用”。這樣不僅提高了重用性,還減少了出錯的幾率,也會加快開發(fā)速度,可以說是一件非常好的事情。

第三點(diǎn),減少網(wǎng)絡(luò)流量。這一點(diǎn)對于小數(shù)據(jù)量的時候一般體現(xiàn)不出來,那么當(dāng)數(shù)據(jù)量較大的時候,我們會發(fā)現(xiàn)由于使用存儲過程比使用SQL語句會使用更少的字節(jié)數(shù),因此它會降低傳輸?shù)臄?shù)據(jù)量。

第四點(diǎn),安全性提高。由于存儲過程也可以使用權(quán)限控制,而且參數(shù)化的存儲過程可以防止SQL注入攻擊,也在一定程度上保證了安全性。

第五點(diǎn),靈活性增強(qiáng)。由于存儲過程可以使用流程控制語句來編寫,導(dǎo)致它有著很強(qiáng)的靈活性,可以根據(jù)實(shí)際情況來執(zhí)行不同的SQL語句,而不是只能單純的簡單的執(zhí)行命令。而且該存儲過程還可以修改其邏輯而其他部分不用改變,也就是說,我們的表的結(jié)構(gòu)改變了,我們只需要修改相應(yīng)的存儲過程即可,我們的Java或者PHP等程序不需要改變。

第六點(diǎn),當(dāng)業(yè)務(wù)復(fù)雜的時候,存儲過程會減少工作量,為什么呢,原因很簡單,如果我們不適用存儲過程,那么就會導(dǎo)致我們先從數(shù)據(jù)庫中取出來數(shù)據(jù),然后經(jīng)過計(jì)算,再放入到數(shù)據(jù)庫中,這個開銷還是蠻大的,這中間的開銷包括我們的Java或者PHP程序連接數(shù)據(jù)庫獲取結(jié)果集等若干操作,如果我們使用了存儲過程,那么就沒有那么多事了,直接在mysql內(nèi)就搞定了。

缺點(diǎn):
第一點(diǎn),工作量加大。這里并不是說我們把程序該做的事讓mysql去做不好,而是mysql本身并沒有很像樣的IDE來開發(fā)我們的存儲過程,我們很多時候還是需要手寫,這樣就會比較麻煩,而且存儲過程的調(diào)試也是一個問題,沒有很像樣的調(diào)試工具。

第二點(diǎn),優(yōu)勢不明顯。運(yùn)行速度上,對于大多數(shù)的語句緩存來說,編譯sql的時間開銷并不是很大,但是執(zhí)行存儲過程還需要檢查權(quán)限等一些其他開銷,所以,對于很簡單的sql,存儲過程并沒有很大優(yōu)勢。

第三點(diǎn),贅余功能。對web程序來說,我們連接數(shù)據(jù)庫的用戶往往就是同一個,不需要太多的安全機(jī)制,所以,對于安全上的檢測看上去很好,實(shí)際上優(yōu)點(diǎn)多余。

第四點(diǎn),小型程序完全無用。對于小型web應(yīng)用來說,它的使用價值就更小了,反而會拖累開發(fā)進(jìn)度。

第五點(diǎn),對于運(yùn)維上。當(dāng)我們的程序要更換數(shù)據(jù)庫的時候,它的移植性相對于不適用存儲過程要復(fù)雜一些,對于維護(hù)上,由于是在db端,因此比server端的程序更好維護(hù)一些。

未命名 回答

from accounts.models import User

accounts.models里有定義User模型么?