我有一个像以下
的SQL表-----------------------------------
|id | price | A | B | C | ... | Z |
-----------------------------------
A-Z的每列具有值b / t 0-99
我希望搜索与目标值范围匹配的所有行。
例如。 target(A:62,B:14,.. Z:99),找到其对应值大于或等于目标值的每一行。
所以查询将类似于
select id, MAX(price) where A >= user.a AND B>=user.b And.. AND Z >= user.z
我的问题是如何优化它。
如果我将桌子分成几块并进行嵌套查询,它会更快吗?还是有一些我应该使用的技术?
编辑:我确实索引了我的所有属性列,(因为更新表格不是我的businese)而且,我实际上添加了2列,第1列是sum:所有列的总和;第二个是max_num:所有列的最大数量。然后在这两个数字上创建一个针对目标基础的视图,然后执行搜索。
提前谢谢大家!
感谢您帮助我将它们放入代码样式文本中!
答案 0 :(得分:0)
创建一些索引可能会加快查询速度。
像:
<!DOCTYPE html>
<html lang="en" class=" js no-touch rgba hsla backgroundsize cssanimations csstransforms csstransforms3d csstransitions fontface generatedcontent svg inlinesvg svgclippaths boxsizing lastchild js no-touch rgba hsla backgroundsize cssanimations csstransforms csstransforms3d csstransitions fontface generatedcontent svg inlinesvg svgclippaths boxsizing lastchild js no-touch rgba hsla backgroundsize cssanimations csstransforms csstransforms3d csstransitions fontface generatedcontent svg inlinesvg svgclippaths boxsizing lastchild">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=IE7">
<title>A Bootstrap Project</title>
<!-- bootbox -->
<!--
<script src="js/bootbox/bootstrap.min.js"></script>
<script src="js/bootbox/bootbox.min.js"></script>
-->
<link href="treegrid/bootstrap-2.3.2/css/bootstrap.css" rel="stylesheet">
<link rel="stylesheet" href="js/bootbox/bootstrap.min.css">
<!--Favicon -->
<link rel="shortcut icon" href="favicon.ico">
<!-- Style -->
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/navigation.css">
<link rel="stylesheet" href="css/customize.css">
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" href="stylesheets/ie_lt9.css" />
<![endif]-->
<!--[if !IE]><!-->
<link rel="stylesheet" type="text/css" href="css/ie_not.css">
<!--<![endif]-->
<script src="js/jquery.min.js"></script>
<script src="js/modernizr.custom.js"></script>
<script src="js/modernizr.js"></script>
<script src="js/highlight.pack.js"></script> <!-- syntax highlighting -->
<script src="js/fastclick.js"></script> <!-- remove 300ms delay on tap -->
<script src="js/pagify.js"></script><!-- dynamic page loading -->
<script src="js/jquery.ba-hashchange.min.js"></script> <!-- monitor hashchanges -->
<script src="js/jquery.tooltipster.min.js"></script> <!-- tooltips -->
<script src="js/jquery-ui.widget.min.js"></script> <!-- for selective tables -->
<script src="js/select2.js"></script> <!-- select2 -->
<script src="js/scripts.js"></script> <!-- all custom scripts -->
<script src="js/screenshot.js"></script> <!-- all custom scripts -->
<script src="js/utils.js"> </script>
<script src="js/model.js"> </script>
<script src="js/render.js"> </script>
<script src="js/reports.js"> </script>
<script src="js/comments.js"> </script>
<script src="js/settings.js"> </script>
<script src="js/jobs.js"> </script>
<!-- auto complete -->
<script src="js/autocomplete/jquery-1.7.1.min.js"></script>
<script src="js/autocomplete/jquery.ui.core.min.js"></script>
<script src="js/autocomplete/jquery.ui.widget.min.js"></script>
<script src="js/autocomplete/jquery.ui.position.min.js"></script>
<script src="js/autocomplete/jquery.ui.autocomplete.min.js"></script>
<link rel="stylesheet" href="js/autocomplete/jquery-ui-1.8.16.custom.css"/>
<!-- date Picker -->
<!-- <script src="datepicker/jquery.min.js"></script> -->
<script src="datepicker/jquery.plugin.js"></script>
<script src="datepicker/jquery.datepick.js"></script>
<link rel="stylesheet" href="datepicker/jquery.datepick.css">
<!-- Boot Box -->
<script src="js/bootbox/bootstrap.min.js"></script>
<script src="js/bootbox/bootbox.min.js"></script>
<!--- Tree Grid -->
<link rel="stylesheet" href="treegrid/css/jquery.treegrid.css">
<script type="text/javascript" src="treegrid/js/jquery.treegrid.js"></script>
<script type="text/javascript" src="treegrid/js/jquery.treegrid.bootstrap2.js"></script>
<!--
<link rel="stylesheet" href="js/bootbox/bootstrap.min.css">
-->
<!--
<link rel="stylesheet" href="datepicker/jquery-ui.css">
<script src="datepicker/jquery-1.10.2.js"></script>
<script src="datepicker/jquery-ui.js"></script>
-->
<!--
<link rel="stylesheet" href="datepicker/style.css">
-->
<link href="fileupload/uploadfile.min.css" rel="stylesheet">
<script src="fileupload/jquery.uploadfile.min.js"></script>
<script type="text/javascript" >
$(document).click(function() {
$("#globalwarningdiv").removeClass("visible");
$("#globalinfodiv").removeClass("visible");
});
$(document).keypress(function(e) {
$("#globalwarningdiv").removeClass("visible");
$("#globalinfodiv").removeClass("visible");
});
$("#globalwarningdiv").click(function(e) {
e.stopPropagation();
});
$("#globalinfodiv").click(function(e) {
e.stopPropagation();
});
$(document).ready( function() {
myModel.getAllData();
});
</script>
</head>
<body>
<div class="content_wrapper">
<div class="logo"><a href=""><img src="images/logo.png"></a></div>
<div id='login-menu' style='display:block;' >
<!--
<div class="mobile_menu_toggle"><a class="icon_arrow_down" href="#">Menu</a></div>
<ul class="sidenav">
<li class="" id="menu-login"> <a href="Javascript: renderHtml.renderLoginPage(); ">Log-in</a> </li>
</ul>
-->
</div>
<!--
<div id='logout-menu' style='display:none;' >
<div class="mobile_menu_toggle"><a class="icon_arrow_down" href="#">Menu</a></div>
<ul class="sidenav">
<li class="" id="menu-login"> <a href="Javascript: renderHtml.verifyDepartment(); ">Log-in</a> </li>
</ul>
</div>
-->
</div>
<div class="content" style="display:block;">
<div id="page_holder" style="display: block;">
<h3> Welcome. </h3>
<!-- <script src="js/components.js"></script> -->
</div>
</div>
</div>
</div>
</body>
</html>