鍍金池/ 問(wèn)答/ 數(shù)據(jù)庫(kù)問(wèn)答
扯不斷 回答

創(chuàng)建索引本來(lái)就是一次性的工作,在mongo shell里面手動(dòng)創(chuàng)建是最好的選擇,為什么要說(shuō)“難道”呢?
這不僅是會(huì)執(zhí)行多少次的問(wèn)題,還有什么時(shí)間執(zhí)行,以及是否影響到生產(chǎn)環(huán)境的問(wèn)題。要理解索引過(guò)程對(duì)于數(shù)據(jù)庫(kù)是一個(gè)很大的消耗,前臺(tái)索引會(huì)鎖住整個(gè)集合上的所有CRUD操作,后臺(tái)索引雖然沒(méi)有直接上鎖,但仍然需要消耗大量CPU和IO來(lái)讀取文檔和修改索引。無(wú)論哪種都有可能消耗大量的時(shí)間和資源(比如在一個(gè)比較大的集合上新建一個(gè)索引)。mongoose不建議在生產(chǎn)環(huán)境使用的原因也在這里。
生產(chǎn)環(huán)境要求的是穩(wěn)定,方便只是其次。在影響到“穩(wěn)定”的時(shí)候讓步的必然是“方便”。

小眼睛 回答

item.location為true的情況下,top才會(huì)綁定

話寡 回答

不能在mongod.exe里面導(dǎo)入數(shù)據(jù),應(yīng)該在終端(cmd)里面導(dǎo)入,啟動(dòng),連接,導(dǎo)入各開(kāi)一個(gè)終端。以及導(dǎo)入的時(shí)候你的json格式要正確。

  1. 有一個(gè)共識(shí)是:程序訪問(wèn)的變量如果都能在系統(tǒng)內(nèi)存cache中則能提升性能,prefetch是內(nèi)核中一個(gè)預(yù)熱內(nèi)存函數(shù),這樣下次遍歷時(shí)就能高效命中內(nèi)存cache,從而提升程序性能。

  2. 上面的代碼中遍歷鏈表時(shí)下次訪問(wèn)的內(nèi)存為pos->next,故在每次遍歷時(shí)對(duì)pos->next進(jìn)行預(yù)熱,從而提升性能。

膽怯 回答

這個(gè)要看你的服務(wù)器B使用的存儲(chǔ)是否和服務(wù)器A是否在同一個(gè)機(jī)房,如果物理距離太遠(yuǎn),IO讀寫(xiě)延遲高了還有什么意義呢?
對(duì)于存儲(chǔ)最重要的是看讀寫(xiě)性能,你做了網(wǎng)絡(luò)驅(qū)動(dòng)器映射,就自己寫(xiě)幾個(gè)SQL實(shí)際測(cè)算一下,跟本地存儲(chǔ)比較一下性能看一下能否接受。

個(gè)人覺(jué)得,如果映射網(wǎng)絡(luò)驅(qū)動(dòng)器,相當(dāng)于磁盤(pán)IO要從網(wǎng)卡走一遍,估計(jì)對(duì)于數(shù)據(jù)庫(kù)這種對(duì)IO性能要求比較高的系統(tǒng)來(lái)說(shuō)應(yīng)該是無(wú)法接受的。

心沉 回答

這么講吧,首先明確一個(gè)東西,

(function(){ 
    //code
})();

這個(gè)是用來(lái)創(chuàng)建閉包的,這個(gè)不管。
然后直接看里面的。

Function是javascript所有函數(shù)的原型,可以通過(guò)
Function(args)的方法來(lái)創(chuàng)建一個(gè)函數(shù)。

在第一個(gè)例子里面,傳遞給Function函數(shù)的是console.log(call)
在閉包里面,call = "23",console.log會(huì)被立即執(zhí)行,所以實(shí)際上執(zhí)行的結(jié)果是
Function(undefined)(),

第二個(gè)例子的話,要先去看MDN,MDN上明確指出
clipboard.png
閉包之內(nèi)的變量不會(huì)被引用,因此這里雖然成功創(chuàng)建了一個(gè)函數(shù)

? anonymous() {
console.log(call)
}

但是其并不具備call的作用域,在立即執(zhí)行的時(shí)候會(huì)報(bào)call is undefined錯(cuò)誤。

這個(gè)問(wèn)題主要是關(guān)于Function的這一個(gè)特點(diǎn)

陪我終 回答

會(huì)不會(huì)在你 select count(*) 之后,insert之前,別的線程插入了該數(shù)據(jù)呢?
要不你多打印點(diǎn)日志,看看問(wèn)題出在哪。
另外,你可以試試:設(shè)置一下 唯一性約束,然后使用:
insert ... on duplicate key update ...
來(lái)操作:無(wú)則插入,有則更新

半心人 回答

關(guān)于join, cross join, inner join官方相關(guān)描述:

In MySQL, JOIN, CROSS JOIN, and INNER JOIN are syntactic equivalents (they can replace each other). In standard SQL, they are not equivalent. INNER JOIN is used with an ON clause, CROSS JOIN is used otherwise.

大意:join, cross join, inner join句法是等價(jià)的,但僅僅是當(dāng)inner join沒(méi)有使用on的時(shí)候,否則就是cross join(交叉連接)

再說(shuō),(逗號(hào))操作符,它在語(yǔ)義上也等價(jià)于inner join,回到你的問(wèn)題,select多個(gè)表(也就是逗號(hào)分割表名)是等同于join的,例如以下是等價(jià)的:

select * from t1,t2

等價(jià)

select * from t1 join t2

再一個(gè)例子:

select * from t1,t2 where t1.id=t2.id

等價(jià)

select * from t1 inner join t2 on t1.id=t2.id

但是,真要說(shuō)區(qū)別,就是,(逗號(hào))比其它任何一個(gè)join的優(yōu)先級(jí)都要低,尤其在混合,和join的sql語(yǔ)句中。例如:

select * from t1, t2 JOIN t3

等價(jià)于

select * from t1,(t2 join t3)

而不是

select * from (t1, t2) join t3

所以如果不注意這個(gè)差異,容易踩坑,以上內(nèi)容大致都來(lái)源于mysql手冊(cè)的join章節(jié),建議樓主至少看三遍以上,鏈接:https://dev.mysql.com/doc/ref...

葬愛(ài) 回答

clipboard.png
遇到安裝問(wèn)題,從上往下依次解決,一般來(lái)說(shuō)都是缺少依賴的包,安裝上就好了,圖中你需要先安裝xcode-select,然后再重裝pkg-config。

朕略傻 回答

select * from question where question_id in (select distinct question_id from anwser)
意思是:找出所有“有答案的問(wèn)題”。即你所謂的[回答數(shù)大于0的問(wèn)題]

至于分頁(yè) limit x,y 即可。

下墜 回答

主要看具體業(yè)務(wù)需求,不過(guò)更推薦方案一。

首先,字段的冗余并不是一個(gè)多大的缺點(diǎn),另外,用事務(wù)來(lái)實(shí)現(xiàn)多表操作也很方便。

而方案一帶來(lái)的好處除了查詢效率高,最關(guān)鍵的是支持的業(yè)務(wù)場(chǎng)景更多,雖然現(xiàn)在看,收藏?cái)?shù)好像也不是個(gè)重要字段,但是某天產(chǎn)品突然加需求說(shuō),咱們要按收藏?cái)?shù)來(lái)個(gè)排序,分頁(yè)等各種,這時(shí)候用方案二實(shí)現(xiàn)起來(lái)就會(huì)越來(lái)越惡心

不討喜 回答

你應(yīng)該是在外網(wǎng)連接的mysql,這個(gè)ip是你的公網(wǎng)地址
你應(yīng)該修改mysql的root用戶的登錄設(shè)置

北城荒 回答

你應(yīng)該思考: 購(gòu)物車從哪里來(lái),到哪里去??赡苓@樣說(shuō)有點(diǎn)玄乎,那么你想購(gòu)物車添加商品,那么它應(yīng)該從哪里來(lái)的數(shù)據(jù)添加進(jìn)去?
首先,購(gòu)物車屬于誰(shuí),所以你必須要聲明這一點(diǎn),添加一個(gè)字段記錄用戶 ID 。
然后,這個(gè)購(gòu)物車放了什么,你需要記錄對(duì)應(yīng)商品 ID ,所以這個(gè)也是必須的。

補(bǔ)充購(gòu)物車放的商品,生成訂單結(jié)算時(shí)使用,為了節(jié)約性能,可以在購(gòu)物車表存放商品的一些基本信息,用來(lái)進(jìn)行結(jié)算。當(dāng)然,考慮到商品信息的可能變動(dòng),可以用聯(lián)表來(lái)查詢獲取相關(guān)信息,這樣保證信息的。。。

最后生成訂單的話

詆毀你 回答

clubName:new RegExp(clubName)

我不懂 回答

如果僅是為了count一下,我想你的sql 和下面的是等價(jià)的

SELECT count(a.id)
FROM retrospect_details a 
JOIN tilbage_stald_sorter tss ON tss.id = a.stald_sorter_id 
JOIN tilbage_stald stald ON stald.id = tss.stald_id 
JOIN tilbage_regionale regionale ON regionale.id = stald.regionale_id 
JOIN tilbage_sorter sorter ON sorter.id = tss.sorter_id WHERE a.del_flag = 0
萌小萌 回答

用Aggregation吧,很好實(shí)現(xiàn)。你這樣得查n次,用aggregation只用一次查出所有。以下是shell示例(并不太熟悉mongoose...)

let department = []
db.stations.aggregate([
    {$group: {_id: "$dept", count: {$sum: 1}}}
]).forEach(doc => {
    department.push(doc.count);
});