您的位置:首页 > 编程语言 > Go语言

django orm 优化

2018-08-18 12:04 405 查看
.markdown-body hr::after,.markdown-body::after { clear: both } .loopLine,.messageLine0 { } .markdown-body { color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; line-height: 1.5 } .markdown-body .pl-c { color: #6a737d } .markdown-body .pl-c1,.markdown-body .pl-s .pl-v { color: #005cc5 } .markdown-body .pl-e,.markdown-body .pl-en { color: #6f42c1 } .markdown-body .pl-s .pl-s1,.markdown-body .pl-smi { color: #24292e } .markdown-body .pl-ent { color: #22863a } .markdown-body .pl-k { color: #d73a49 } .markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre { color: #032f62 } .markdown-body .pl-smw,.markdown-body .pl-v { color: #e36209 } .markdown-body .pl-bu { color: #b31d28 } .markdown-body .pl-ii { color: #fafbfc; background-color: #b31d28 } .markdown-body .pl-c2 { color: #fafbfc; background-color: #d73a49 } .markdown-body .pl-c2::before { content: "^M" } .markdown-body .pl-sr .pl-cce { font-weight: 700; color: #22863a } .markdown-body .pl-ml { color: #735c0f } .markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms { font-weight: 700; color: #005cc5 } .markdown-body .pl-mi { font-style: italic; color: #24292e } .markdown-body .pl-mb { font-weight: 700; color: #24292e } .markdown-body .pl-md { color: #b31d28; background-color: #ffeef0 } .markdown-body .pl-mi1 { color: #22863a; background-color: #f0fff4 } .markdown-body .pl-mc { color: #e36209; background-color: #ffebda } .markdown-body .pl-mi2 { color: #f6f8fa; background-color: #005cc5 } .markdown-body .pl-mdr { font-weight: 700; color: #6f42c1 } .markdown-body .pl-ba { color: #586069 } .markdown-body .pl-sg { color: #959da5 } .markdown-body .pl-corl { text-decoration: underline; color: #032f62 } .markdown-body .octicon { display: inline-block; vertical-align: text-bottom } .markdown-body hr::after,.markdown-body hr::before,.markdown-body::after,.markdown-body::before { display: table; content: "" } .markdown-body a { background-color: transparent; color: #0366d6; text-decoration: none } .markdown-body a:active,.markdown-body a:hover { outline-width: 0 } .markdown-body h1 { margin: .67em 0 } .markdown-body img { border-style: none } .markdown-body svg:not(:root) { overflow: hidden } .markdown-body hr { } .markdown-body input { font: inherit; margin: 0; overflow: visible; font-family: inherit; font-size: inherit; line-height: inherit } .markdown-body [type="checkbox"] { padding: 0 } .markdown-body * { } .markdown-body a:hover { text-decoration: underline } .markdown-body strong { font-weight: 600 } .markdown-body td,.markdown-body th { padding: 0 } .markdown-body blockquote { margin: 0 } .markdown-body ol ol,.markdown-body ul ol { list-style-type: lower-roman } .markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol { list-style-type: lower-alpha } .markdown-body .task-list-item,ul.table-of-contents { list-style-type: none } .markdown-body dd { margin-left: 0 } .markdown-body code { font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace } .markdown-body pre { font: 12px SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace } .markdown-body .pl-0 { padding-left: 0 !important } .markdown-body .pl-1 { padding-left: 4px !important } .markdown-body .pl-2 { padding-left: 8px !important } .markdown-body .pl-3 { padding-left: 16px !important } .markdown-body .pl-4 { padding-left: 24px !important } .markdown-body .pl-5 { padding-left: 32px !important } .markdown-body .pl-6 { padding-left: 40px !important } .markdown-body>:first-child { margin-top: 0 !important } .markdown-body>:last-child { margin-bottom: 0 !important } .markdown-body a:not([href]) { color: inherit; text-decoration: none } .markdown-body .anchor { float: left; padding-right: 4px; margin-left: -20px; line-height: 1 } .markdown-body .anchor:focus { outline: 0 } .markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul { margin-top: 0; margin-bottom: 16px } .markdown-body hr { overflow: hidden; background: #e1e4e8; height: .25em; padding: 0; margin: 24px 0; border: 0 } .markdown-body blockquote { padding: 0 1em; color: #6a737d; border-left: .25em solid #dfe2e5 } .markdown-body h1,.markdown-body h2 { padding-bottom: .3em; border-bottom: 1px solid #eaecef } .markdown-body blockquote>:first-child { margin-top: 0 } .markdown-body blockquote>:last-child { margin-bottom: 0 } .markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6 { margin-top: 24px; margin-bottom: 16px; font-weight: 600; line-height: 1.25 } .markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link { color: #1b1f23; vertical-align: middle; visibility: hidden } .markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor { text-decoration: none } .markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link { visibility: visible } .markdown-body h6 { color: #6a737d } .markdown-body ol,.markdown-body ul { padding-left: 2em } .markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul { margin-top: 0; margin-bottom: 0 } .markdown-body li>p { margin-top: 16px } .markdown-body li+li { margin-top: .25em } .markdown-body dl { padding: 0 } .markdown-body dl dt { padding: 0; margin-top: 16px; font-size: 1em; font-style: italic; font-weight: 600 } .markdown-body dl dd { padding: 0 16px; margin-bottom: 16px } .markdown-body table th { font-weight: 600 } .markdown-body table td,.markdown-body table th { padding: 6px 13px; border: 1px solid #dfe2e5 } .markdown-body table tr { background-color: #fff; border-top: 1px solid #c6cbd1 } .markdown-body table tr:nth-child(2n) { background-color: #f6f8fa } .markdown-body img { max-width: 100%; background-color: #fff } .markdown-body code { padding: .2em 0; margin: 0; font-size: 85%; background-color: rgba(27,31,35,.05) } .markdown-body code::after,.markdown-body code::before { letter-spacing: -.2em; content: " " } .markdown-body pre>code { padding: 0; margin: 0; font-size: 100%; white-space: pre; background: 0 0; border: 0 } .markdown-body .highlight { margin-bottom: 16px } .markdown-body .highlight pre { margin-bottom: 0 } .markdown-body .highlight pre,.markdown-body pre { padding: 16px; overflow: auto; font-size: 85%; line-height: 1.45; background-color: #f6f8fa } .markdown-body pre code { display: inline; max-width: auto; padding: 0; margin: 0; overflow: visible; line-height: inherit; background-color: transparent; border: 0 } .markdown-body pre code::after,.markdown-body pre code::before { content: normal } .markdown-body .full-commit .btn-outline:not(:disabled):hover { color: #005cc5; border-color: #005cc5 } .markdown-body kbd { display: inline-block; padding: 3px 5px; font: 11px SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; line-height: 10px; color: #444d56; vertical-align: middle; background-color: #fafbfc; border: 1px solid #d1d5da; border-bottom-color: #c6cbd1 } .node text,.noteText,div.mermaidTooltip { font-family: "trebuchet ms", verdana, arial } .markdown-body :checked+.radio-label { position: relative; z-index: 1; border-color: #0366d6 } .markdown-body .task-list-item+.task-list-item { margin-top: 3px } .markdown-body .task-list-item input { margin: 0 .2em .25em -1.6em; vertical-align: middle } .markdown-body hr { border-bottom-color: #eee } .hljs { display: block; padding: .5em; color: #333; background: #f8f8f8 } .hljs-comment,.hljs-quote { color: #998; font-style: italic } .hljs-keyword,.hljs-selector-tag,.hljs-subst { color: #333; font-weight: 700 } .hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable { color: teal } .hljs-doctag,.hljs-string { color: #d14 } .hljs-section,.hljs-selector-id,.hljs-title { color: #900; font-weight: 700 } .hljs-subst { font-weight: 400 } .hljs-class .hljs-title,.hljs-type { color: #458; font-weight: 700 } .hljs-attribute,.hljs-name,.hljs-tag { color: navy; font-weight: 400 } .hljs-meta,.hljs-strong { font-weight: 700 } .hljs-link,.hljs-regexp { color: #009926 } .hljs-bullet,.hljs-symbol { color: #990073 } .hljs-built_in,.hljs-builtin-name { color: #0086b3 } .hljs-meta { color: #999 } .hljs-deletion { background: #fdd } .hljs-addition { background: #dfd } .hljs-emphasis { font-style: italic } .mermaid .label { color: #333 } .node circle,.node ellipse,.node polygon,.node rect { } .edgePath .path { } .edgeLabel { background-color: #e8e8e8 } .cluster rect { } .cluster text { } .actor { } text.actor { } .actor-line { } .messageLine0,.messageLine1 { } #arrowhead { } #crosshead path { } .messageText { } .labelBox { } .labelText,.loopText { } .loopLine { } .note { } .noteText { font-size: 14px } .section { opacity: .2 } .section0 { } .section2 { } .section1,.section3 { opacity: .2 } .sectionTitle0,.sectionTitle1,.sectionTitle2,.sectionTitle3 { } .sectionTitle { font-size: 11px } .grid .tick { opacity: .3 } .grid path { } .today { } .task { } .taskText { font-size: 11px } .taskTextOutsideRight { font-size: 11px } .taskTextOutsideLeft { font-size: 11px } .taskText0,.taskText1,.taskText2,.taskText3 { } .task0,.task1,.task2,.task3 { } .taskTextOutside0,.taskTextOutside1,.taskTextOutside2,.taskTextOutside3 { } .active0,.active1,.active2,.active3 { } .activeText0,.activeText1,.activeText2,.activeText3 { } .done0,.done1,.done2,.done3 { } .doneText0,.doneText1,.doneText2,.doneText3 { } .crit0,.crit1,.crit2,.crit3 { } .activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3 { } .doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3 { cursor: pointer } .activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3,.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3 { } .titleText { font-size: 18px } .node text { font-size: 14px } div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; font-size: 12px; background: #ffffde; border: 1px solid #aa3; z-index: 100 } .katex-display { display: block; margin: 1em 0; text-align: center } .katex .base,.katex .katex-html,.katex .strut { display: inline-block } .katex-display>.katex { display: inline-block; text-align: initial } .katex { font: 400 1.21em KaTeX_Main, Times New Roman, serif; line-height: 1.2; white-space: nowrap; text-indent: 0 } .katex * { } .katex .katex-mathml { position: absolute; clip: rect(1px,1px,1px,1px); padding: 0; border: 0; height: 1px; width: 1px; overflow: hidden } .katex .base,.katex .vlist,.katex .vlist>span { position: relative } .katex .mathrm { font-style: normal } .katex .mainit,.katex .mathit,.katex .textit { font-style: italic } .katex .mathit { font-family: KaTeX_Math } .katex .mathbf { font-family: KaTeX_Main; font-weight: 700 } .katex .amsrm,.katex .mathbb { font-family: KaTeX_AMS } .katex .mathcal { font-family: KaTeX_Caligraphic } .katex .mathfrak { font-family: KaTeX_Fraktur } .katex .mathtt { font-family: KaTeX_Typewriter } .katex .mathscr { font-family: KaTeX_Script } .katex .mathsf { font-family: KaTeX_SansSerif } .katex .mainit,.katex .mainrm { font-family: KaTeX_Main } .katex .mainrm { font-style: normal } .katex .mord+.mop { margin-left: .16667em } .katex .mord+.mbin { margin-left: .22222em } .katex .mord+.mrel { margin-left: .27778em } .katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner { margin-left: .16667em } .katex .mop+.mrel { margin-left: .27778em } .katex .mop+.minner { margin-left: .16667em } .katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord { margin-left: .22222em } .katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord { margin-left: .27778em } .katex .mclose+.mop { margin-left: .16667em } .katex .mclose+.mbin { margin-left: .22222em } .katex .mclose+.mrel { margin-left: .27778em } .katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel { margin-left: .16667em } .katex .minner+.mbin { margin-left: .22222em } .katex .minner+.mrel { margin-left: .27778em } .katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct { margin-left: .16667em } .katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight { margin-left: 0 } .katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight { margin-left: .16667em } .katex .vlist-t { display: inline-table; table-layout: fixed } .katex .vlist-r { display: table-row } .katex .vlist { display: table-cell; vertical-align: bottom } .katex .vlist>span { display: block; height: 0 } .katex .vlist>span>span { display: inline-block } .katex .vlist>span>.pstrut { overflow: hidden; width: 0 } .katex .vlist-t2 { margin-right: -2px } .katex .vlist-s { display: table-cell; vertical-align: bottom; font-size: 1px; width: 2px } .katex .fontsize-ensurer,.katex .llap>.fix,.katex .mfrac .frac-line,.katex .mspace,.katex .mtable .arraycolsep,.katex .mtable .vertical-separator,.katex .nulldelimiter,.katex .rlap>.fix,.katex .rule,.katex .sizing { display: inline-block } .katex .msupsub { text-align: left } .katex .accent>.vlist-t,.katex .mfrac>span>span,.katex .mtable .col-align-c>.vlist-t,.katex .op-limits>.vlist-t { text-align: center } .katex .mfrac .frac-line { width: 100%; border-bottom-style: solid } .katex .mspace.negativethinspace { margin-left: -.16667em } .katex .mspace.thinspace { width: .16667em } .katex .mspace.negativemediumspace { margin-left: -.22222em } .katex .mspace.mediumspace { width: .22222em } .katex .mspace.thickspace { width: .27778em } .katex .mspace.sixmuspace { width: .333333em } .katex .mspace.eightmuspace { width: .444444em } .katex .mspace.enspace { width: .5em } .katex .mspace.twelvemuspace { width: .666667em } .katex .mspace.quad { width: 1em } .katex .mspace.qquad { width: 2em } .katex .llap,.katex .rlap { width: 0; position: relative } .katex .llap>.inner,.katex .rlap>.inner { position: absolute } .katex .llap>.inner { right: 0 } .katex .rlap>.inner { left: 0 } .katex .katex-logo .a { font-size: .75em; margin-left: -.32em; position: relative; top: -.2em } .katex .katex-logo .t { margin-left: -.23em } .katex .katex-logo .e { margin-left: -.1667em; position: relative; top: .2155em } .katex .katex-logo .x { margin-left: -.125em } .katex .rule { border: 0 solid; position: relative } .katex .overline .overline-line,.katex .underline .underline-line { display: inline-block; width: 100%; border-bottom-style: solid } .katex .sqrt>.root { margin-left: .27777778em; margin-right: -.55555556em } .katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1 { font-size: 1em } .katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2 { font-size: 1.2em } .katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3 { font-size: 1.4em } .katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4 { font-size: 1.6em } .katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5 { font-size: 1.8em } .katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6 { font-size: 2em } .katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7 { font-size: 2.4em } .katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8 { font-size: 2.88em } .katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9 { font-size: 3.456em } .katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10 { font-size: 4.148em } .katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11 { font-size: 4.976em } .katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1 { font-size: .83333333em } .katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2 { font-size: 1em } .katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3 { font-size: 1.16666667em } .katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4 { font-size: 1.33333333em } .katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5 { font-size: 1.5em } .katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6 { font-size: 1.66666667em } .katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7 { font-size: 2em } .katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8 { font-size: 2.4em } .katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9 { font-size: 2.88em } .katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10 { font-size: 3.45666667em } .katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11 { font-size: 4.14666667em } .katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1 { font-size: .71428571em } .katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2 { font-size: .85714286em } .katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3 { font-size: 1em } .katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4 { font-size: 1.14285714em } .katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5 { font-size: 1.28571429em } .katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6 { font-size: 1.42857143em } .katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7 { font-size: 1.71428571em } .katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8 { font-size: 2.05714286em } .katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9 { font-size: 2.46857143em } .katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10 { font-size: 2.96285714em } .katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11 { font-size: 3.55428571em } .katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1 { font-size: .625em } .katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2 { font-size: .75em } .katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3 { font-size: .875em } .katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4 { font-size: 1em } .katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5 { font-size: 1.125em } .katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6 { font-size: 1.25em } .katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7 { font-size: 1.5em } .katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8 { font-size: 1.8em } .katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9 { font-size: 2.16em } .katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10 { font-size: 2.5925em } .katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11 { font-size: 3.11em } .katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1 { font-size: .55555556em } .katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2 { font-size: .66666667em } .katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3 { font-size: .77777778em } .katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4 { font-size: .88888889em } .katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5 { font-size: 1em } .katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6 { font-size: 1.11111111em } .katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7 { font-size: 1.33333333em } .katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8 { font-size: 1.6em } .katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9 { font-size: 1.92em } .katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10 { font-size: 2.30444444em } .katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11 { font-size: 2.76444444em } .katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1 { font-size: .5em } .katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2 { font-size: .6em } .katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3 { font-size: .7em } .katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4 { font-size: .8em } .katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5 { font-size: .9em } .katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6 { font-size: 1em } .katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7 { font-size: 1.2em } .katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8 { font-size: 1.44em } .katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9 { font-size: 1.728em } .katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10 { font-size: 2.074em } .katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11 { font-size: 2.488em } .katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1 { font-size: .41666667em } .katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2 { font-size: .5em } .katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3 { font-size: .58333333em } .katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4 { font-size: .66666667em } .katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5 { font-size: .75em } .katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6 { font-size: .83333333em } .katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7 { font-size: 1em } .katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8 { font-size: 1.2em } .katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9 { font-size: 1.44em } .katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10 { font-size: 1.72833333em } .katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11 { font-size: 2.07333333em } .katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1 { font-size: .34722222em } .katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2 { font-size: .41666667em } .katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3 { font-size: .48611111em } .katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4 { font-size: .55555556em } .katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5 { font-size: .625em } .katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6 { font-size: .69444444em } .katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7 { font-size: .83333333em } .katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8 { font-size: 1em } .katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9 { font-size: 1.2em } .katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10 { font-size: 1.44027778em } .katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11 { font-size: 1.72777778em } .katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1 { font-size: .28935185em } .katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2 { font-size: .34722222em } .katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3 { font-size: .40509259em } .katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4 { font-size: .46296296em } .katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5 { font-size: .52083333em } .katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6 { font-size: .5787037em } .katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7 { font-size: .69444444em } .katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8 { font-size: .83333333em } .katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9 { font-size: 1em } .katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10 { font-size: 1.20023148em } .katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11 { font-size: 1.43981481em } .katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1 { font-size: .24108004em } .katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2 { font-size: .28929605em } .katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3 { font-size: .33751205em } .katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4 { font-size: .38572806em } .katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5 { font-size: .43394407em } .katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6 { font-size: .48216008em } .katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7 { font-size: .57859209em } .katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8 { font-size: .69431051em } .katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9 { font-size: .83317261em } .katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10 { font-size: 1em } .katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11 { font-size: 1.19961427em } .katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1 { font-size: .20096463em } .katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2 { font-size: .24115756em } .katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3 { font-size: .28135048em } .katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4 { font-size: .32154341em } .katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5 { font-size: .36173633em } .katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6 { font-size: .40192926em } .katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7 { font-size: .48231511em } .katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8 { font-size: .57877814em } .katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9 { font-size: .69453376em } .katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10 { font-size: .83360129em } .katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11 { font-size: 1em } .katex .delimsizing.size1 { font-family: KaTeX_Size1 } .katex .delimsizing.size2 { font-family: KaTeX_Size2 } .katex .delimsizing.size3 { font-family: KaTeX_Size3 } .katex .delimsizing.size4 { font-family: KaTeX_Size4 } .katex .delimsizing.mult .delim-size1>span { font-family: KaTeX_Size1 } .katex .delimsizing.mult .delim-size4>span { font-family: KaTeX_Size4 } .katex .nulldelimiter { width: .12em } .katex .delimcenter,.katex .op-symbol { position: relative } .katex .op-symbol.small-op { font-family: KaTeX_Size1 } .katex .op-symbol.large-op { font-family: KaTeX_Size2 } .katex .accent .accent-body>span { width: 0 } .katex .accent .accent-body.accent-vec>span { position: relative; left: .326em } .katex .accent .accent-body.accent-hungarian>span { position: relative; left: .25em } .katex .mtable .vertical-separator { margin: 0 -.025em; border-right: .05em solid #000 } .katex .stretchy,.katex svg { width: 100%; display: block } .katex .mtable .col-align-l>.vlist-t { text-align: left } .katex .mtable .col-align-r>.vlist-t { text-align: right } .katex .svg-align { text-align: left } .katex .mover,.katex .munder,.katex .x-arrow,div.mermaid { text-align: center } .katex svg { position: absolute } .katex svg path { } .katex svg line { } .katex .stretchy::after,.katex .stretchy::before { content: "" } .katex .x-arrow-pad { padding: 0 .5em } .katex .boxpad { padding: 0 .3em } .katex .fbox { border: .04em solid #000 } .katex .cancel-pad { padding: 0 .2em } .katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap { margin-left: -.2em } .katex .sout { border-bottom-style: solid; border-bottom-width: .08em } body { margin: 0; padding: 0 } .markdown-body { min-width: 256px; max-width: 978px; margin: 0 auto; padding: 20px; font-size: 14px } .markdown-body h1 { font-size: 2.25em } .markdown-body h2 { font-size: 1.75em } .markdown-body h3 { font-size: 1.5em } .markdown-body h4 { font-size: 1.25em } .markdown-body h5,.markdown-body h6 { font-size: 1em } div.mermaid svg { height: auto } hr.footnotes-sep { margin: 64px 0 32px; height: 1px } .footnotes { font-size: 90%; padding-left: 16px } li.footnote-item>p { margin: 8px 0 } .danger,.info,.success,.warning { padding: 15px; margin-bottom: 20px; border: 1px solid transparent } .danger>p:last-child,.info>p:last-child,.success>p:last-child,.warning>p:last-child { margin-bottom: 0 } .success { color: #3c763d; background-color: #dff0d8; border-color: #d6e9c6 } .info { color: #31708f; background-color: #d9edf7; border-color: #bce8f1 } .warning { color: #8a6d3b; background-color: #fcf8e3; border-color: #faebcc } .danger { color: #a94442; background-color: #f2dede; border-color: #ebccd1 } abbr[title] { cursor: help; border-bottom: 1px dotted #777 } ul.table-of-contents li { margin: 4px 0 } .markdown-body table { border-spacing: 0; border-collapse: collapse; width: auto; display: table } .markdown-body table td,.markdown-body table th { }

orm优化

  1. 数据库技术进行优化,包括给字段加索引,设置唯一性约束等等;

  2. 查询过滤工作在数据库语句中做,不要放在代码中完成(看情况);

  3. 如果要一次查询出集合的数量,使用count函数,而不是len函数,但是如果后面还需要到集合,那就用len,因为count还需要进行一次数据库的操作;

  4. 避免过多的使用count和exists函数;

  5. 如果需要查询对象的外键,则使用外键字段而不是使用关联的外键的对象的主键;

例子:
a.b_id # 正确
a.b.id  # 错误
  1. 在通过all语句查询时,不要做跨表查询,只查询当前表中有的数据,否则查询语句的性能会下降很多;
比如:a表存在外键b表
a.b.all() # 错误
  1. 如果想要查询其他表的数据,则加上select_related(ForeignKey字段名,其实就是主动联表查询,性能也会下降),如果有多个,则在括号中加上;

  2. 加only参数是从查询结果中只取某个字段,而另外一个defer方法则是从查询结果中排除某个字段;

  3. 不要获取你不需要的东西,可以通过values和value_list实现;

values返回的是字典数组,比如:[{'key1': value1, 'key2': value2}, {'key1': value3, 'key2': value4}]
value_list返回的是tuple数组 [('value1', 'value2'), ('value3', 'value4')]
value_list+flat=True返回的是数组 ['value1', ...]
  1. 如果想知道是否存在至少一个结果,使用exists,而不是使用if QuerySet;但是如果后面需要用到前面的QuerySet,那就可以使用if 判断;
#  Don't waste a query if you are using the queryset
books = Book.objects.filter(..)
if len(books) > 5:
do_stuff_with_books(books)
#  If you aren't using the queryset use count
books = Book.objects.filter(..)
if books.count() > 5:
do_some_stuff()
#  But never
if len(Book.objects.filter(..)) > 5:
do_some_stuff()
  1. 在任何位置使用QuerySet.exists()或者QuerySet.count()都会导致额外的查询;

  2. 不要做无所谓的排序,排序并非没有代价,每个排序的字段都是数据库必须执行的操作;

  3. 如果要插入多条数据,则使用bulk_create来批量插入,减少sql查询的数量;

  4. 对于缓存的QuerySet对象使用with标签,可以让数据被缓存起来使用;

  5. 使用QuerySet.extra明确的指出要查询的字段;

  6. 批量的更新和删除则使用Queryset.update和delete函数,但是更新操作注意对象的缓存;

  7. 使用QuerySet.Iterator迭代大数据;

当你获得一个queryset的时候,django会缓存下来,保存在内存中,如果需要对queryset进行多次的循环,那么这种缓存无可厚非; 但是如果你只需要进行一次的循环,那么其实并不需要缓存,这个使用就可以使用iterator;

比如:
for book in Books.objects.all().iterator():
do_stuff(book)
  1. 如果想判断是否存在外键,只需要判断外键的id即可;

  2. 不要在循环中查询,而是提前取出,并且做好映射关系,这样在循环中直接通过字典的形式获取到;

  3. 当计算出一个QuerySet的时候,如果还需要进行多次循环的话,则可以先保留着这个缓存,但是如果只是使用一次的话,没有必要使用到缓存;

python优化:

  1. 排序尽量使用 .sort(), 其中使用 key 比 cmp 效率更高

参考: http://www.atjiang.com/2scoopsdjango1.8-24-finding-and-reducing-bottlenecks/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: