鍍金池/ 問答/ 數(shù)據(jù)庫(kù)問答

nModified:0不是寫了么,沒有匹配到。fruit是個(gè)數(shù)組所以 "fruit.price":price,是什么?
subdocs

愚念 回答

如果你的庫(kù)2就沒有sku表,可以通過mysqldump命令來把庫(kù)1中的sku表導(dǎo)出到文件,再把這個(gè)文件中的數(shù)據(jù)導(dǎo)入到庫(kù)2中即可:

$ mysqldump -uroot -proot --databases db1 --tables sku  >/tmp/sku.sql
$ mysql -uroot -proot db2 < /tmp/sku.sql

如果你庫(kù)2本身也有sku表,只是想將庫(kù)1中庫(kù)2沒有的數(shù)據(jù)更新到庫(kù)2,那么首先你得通過insert ... select語句來操作,需要注意,語句最好不要一次性插入10w數(shù)據(jù),最好按一定條件分開,比如id,因?yàn)閙ysql內(nèi)部有一定限制:

INSERT INTO db2.sku
SELECT * FROM db1.sku
where 
(db1.sku.id between 1 and 10000)
and (db2.sku沒有這條數(shù)據(jù));

INSERT INTO db2.sku
SELECT * FROM db1.sku
where 
(db1.sku.id between 10001 and 20000)
and (db2.sku沒有這條數(shù)據(jù));

希望能幫助到你。

萌面人 回答

自己瞎寫的一個(gè)關(guān)于超級(jí)初級(jí)的數(shù)據(jù)表建立的一個(gè)總結(jié)

你可以簡(jiǎn)單看一下,因?yàn)橐仓皇呛?jiǎn)略寫,但建立數(shù)據(jù)表,無非是,確立你需要哪些表,而這些你是明確的。然后是確定每個(gè)表與表之間的關(guān)系,明確后可以建立對(duì)應(yīng)的關(guān)聯(lián)甚至關(guān)系表。更多的需要根據(jù)具體的需求,以及個(gè)人經(jīng)驗(yàn)積累,或者系統(tǒng)學(xué)習(xí)吧。我的知識(shí)只支持我說道這么一些了。

萌小萌 回答

已解決

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Demo extends CI_Controller {

    public function index() {
       $con=mysqli_connect("localhost","root","***","test"); 
       //輸出中文可以加一句 mysqli_query($con,"SET NAMES utf8");
       $query = mysqli_query($con,"select * from user");
       $array =  array();
       while($row = mysqli_fetch_assoc($query)){
        $array[] =  $row; 
      }
      echo json_encode($array);

    }
} 
野橘 回答

把crated_at字段拆分成年,月兩個(gè)字段,放在原表中.然后根據(jù)月字段就行g(shù)roup by.

巷尾 回答

不要在循環(huán)里面放Sql語句,可以把$row['prod_id']單獨(dú)拿出來,sql語句可以寫成wherein

囍槑 回答

從效率來看:

  • 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a)
  • T1數(shù)據(jù)量小而T2數(shù)據(jù)量非常大時(shí),T1<<T2 時(shí),1) 的查詢效率高。
  • 2) select * from T1 where T1.a in (select T2.a from T2)
  • T1數(shù)據(jù)量非常大而T2數(shù)據(jù)量小時(shí),T1>>T2 時(shí),2) 的查詢效率高。

簡(jiǎn)而言之,一般式:外表大,用IN;內(nèi)表大,用EXISTS。

詳情

使用DelayQueue

DelayQueue能做什么?
在我們的業(yè)務(wù)中通常會(huì)有一些需求是這樣的:

  1. 淘寶訂單業(yè)務(wù):下單之后如果三十分鐘之內(nèi)沒有付款就自動(dòng)取消訂單。
  2. 餓了嗎訂餐通知:下單成功后60s之后給用戶發(fā)送短信通知。

那么這類業(yè)務(wù)我們可以總結(jié)出一個(gè)特點(diǎn):需要延遲工作。
由此的情況,就是我們的DelayQueue應(yīng)用需求的產(chǎn)生。
給你個(gè)鏈接 http://blog.csdn.net/u0110017... 不過這是JAVA的 不知道PHP 是什么

挽歌 回答

因?yàn)镮nnoDB其他方面的優(yōu)點(diǎn)可以完全碾壓MyISAM,比如崩潰恢復(fù)快,支持事務(wù),支持行級(jí)鎖,支持真正的熱備份等等。多了這么多功能當(dāng)然更耗資源羅
可以看看這本書 https://segmentfault.com/a/11...;

下墜 回答

層級(jí)節(jié)點(diǎn),做code,看一下我天朝的行政區(qū)劃代碼,

第一層 第二層 第三層
100 100100 100100100
200 200100 200100100
300 300100 300100100

查詢某個(gè)節(jié)點(diǎn)的子集(子子集等),like '100%';

idpid保留,兩種模式。

何蘇葉 回答
db.b.aggregate([
    {$unwind: "$comment"},
    {
      $lookup:
        {
          from: "A",
          localField: "comment.uid",
          foreignField: "uid",
          as: "guest"
        }
    },
    {$group : {_id:"$title",fullDoc:{$push:"$$ROOT"}} // <---將整個(gè)文檔放進(jìn)來
]);

這樣做雖然可以達(dá)到你的目的,但是建議你還是考慮一下冗余。這里的數(shù)據(jù)一致性并沒有這么重要。
另外$lookup雖然可以解決問題,但是它的性能并不是很好,并且不支持Sharding,慎用。

巫婆 回答

我用具體的代碼來解釋下吧
接口A,有方法X

public interface A {
    public void methodX() throws IOException;
}

在用戶模塊有這樣一段調(diào)用

public class ModuleUser{
    public void methodY(A a) throws IOException
    {
        a.methodX();
    }
}

現(xiàn)在要對(duì)方法X增加一個(gè)異常,變?yōu)椋?/p>

public interface A {
    public void methodX() throws IOException,DataFormatException;
}

這樣用戶模塊ModuleUser的方法Y就要修改,不修改,編譯就不會(huì)通過。

怎么樣解決呢?
方法1,新方法調(diào)用舊方法。(接口中不能新方調(diào)用舊方法,所以我改為抽象類)

public abstract class A {
    public void methodX() throws IOException
    {
        try {
            methodNewX();
        } catch (DataFormatException e) {
            throw new RuntimeException(e);
        }
    }
    
    public abstract void methodNewX() throws IOException ,DataFormatException;
}

方法2: 以拋出一個(gè)unchecked異常,unchecked就是編譯器不檢查的運(yùn)行時(shí)異常。
如下

public interface A {
    public void methodX() throws IOException,RuntimeException;
}

這樣用戶代碼也不用改。

但這兩個(gè)方法都不好。

作者喜歡的做法是這樣的(也是推薦的方式)。
在包中定義自己的異常

public class MyException extends Exception {

}

接口一開始就寫成

public interface A {
    public void methodX() throws MyException;
}

用戶模塊就會(huì)是這樣的:

public class ModuleUser{
    public void methodY(A a) throws MyException
    {
        a.methodX();
    }
}

如果再遇到上面要加異常信息的情況
就為MyException創(chuàng)建一個(gè)子類,加接口A上,這樣用戶代碼就不用改,也能適配。

上面一段話大概就是想表達(dá)這個(gè)觀點(diǎn)。
因?yàn)檫@本書是國(guó)外人寫的,翻譯成中文,所以讀起來有點(diǎn)別扭。
英文原文是這樣的

There is one particular area with problems in changing interfaces in Java: adding an exception to the throws clause.

讀這本書,覺得不好理解的,就可試著看看英文原文。

話寡 回答

populate做不到,用aggregate

陌顏 回答

問題一
可能是數(shù)組上的索引,也就是Multikey Index。這是正常的。一個(gè)文檔的數(shù)組有多少個(gè)元素就有多少個(gè)key。

問題二
如果符合條件的一共只有31條,不就是31了嗎?

薔薇花 回答

如果是輕量級(jí)服務(wù)器的話,應(yīng)該只需要在防火墻 放行 3306端口 即可,但你的服務(wù)器必須安裝mysql了。
注意,一般默認(rèn)的是沒有安裝mysql的。

歆久 回答

不能!admin是管理你每個(gè)數(shù)據(jù)庫(kù)的用戶名和密碼,可以理解為該數(shù)據(jù)庫(kù)的白名單。默認(rèn)mongodb不開啟鑒權(quán),即不需要用戶名密碼就可以連接,如果你開啟,那么每個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)的用戶名密碼就保存在admin中

拼未來 回答

ALTER TABLE num ENGINE=MYISAM

礙你眼 回答

users // 用戶表
plugins // 插件
user_plugin_relationships //用戶插件關(guān)系表

你這個(gè)直接就起名a1_cat_relationships 然后在主鍵里把表是干什么用的寫到備注里
數(shù)據(jù)庫(kù)還是給開發(fā)人員看的,內(nèi)部統(tǒng)一一套規(guī)矩就OK了