求Mssql数组列筛选的优化方法

问题描述

各位大师,各位朋友们,求指引一个优化方式。1、数据库中商品明细表如下图2、图中圈起来的Store_No列表示可以访问这个商品的门店编号。3、用户登陆系统时,数组user_StoreArray存入了当前用户可以访问的门店编号,格式是这样的string[]user_StoreArray={"All","01"}。4、为了取得当前用户可以访问的所有商品记录,需要用数组user_StoreArray与商品表item的Store_No列进行匹配。5、我写了如下的代码:varlist=db.Item.Where(d=>user_StoreArray.Contains(d.Store_No)).ToList();for(inti=0;i<user_StoreArray.Length;i++){vartemp=db.Item.Where(d=>!user_StoreArray.Contains(d.Store_No)&&d.Store_No.Contains(user_StoreArray[i])).ToList();foreach(varitemintemp){if(list.Contains(item)==false){list.Add(item);}}}6、user_StoreArray.Contains(d.Store_No)这行代码转换后得到Sql的代码是Store_Noin('All','01')7、为了优化代码,提升效率特请各位老师,指导一个优化方法,非常感谢!

解决方案

解决方案二:
就几行代码不知道你需要优化什么、、、
解决方案三:
优化读数据库的方式,当前的方法有了循环多次读数据库效率低。
解决方案四:
引用1楼zifengshen1981的回复:

就几行代码不知道你需要优化什么、、、

优化读数据库的方式,当前的方法有了循环多次读数据库效率低。
解决方案五:
还是不明白你的意思。如果只是想构造where条件的话,直接将序号保存到字符串里面拼接出来,还用list去保存啥子哦
解决方案六:
你用非关系型字段了,就要有效率低的准备吧
解决方案七:
【数组列】已经违反了表设计的第一范式。
解决方案八:
进来学习一下
解决方案九:
这样的设计,想要提高效率比较麻烦,我个人建议,你可以再数据库增加一个视图,视图就是把所有的user_StoreArray与商品表item的Store_No对应关系显示出来。这样只需要view视图弄好了,然后用户登录,就可以直接查询视图了。因此,用户的查询速度回比较快。而view视图你在用户查询之前已经生成完毕了。所以和用户的登录就没有关系了。
解决方案十:
谢谢!感觉这样不错。

时间: 2024-08-03 10:53:12

求Mssql数组列筛选的优化方法的相关文章

求唯一值的变态优化方法 - 递归收敛

标签 PostgreSQL , 递归去重 , 递归优化 , count(distinct ), 稀疏列 , 统计 背景 今天要说的这个优化是从前面一篇讲解<performance tuning case :use cursor or trigger replace group by and order by> http://blog.163.com/digoal@126/blog/static/16387704020128142829610/ 的延展. CASE 例如一个表中有一个字段是性别,

c++-UVa1374快速幂运算迭代深搜法 ,C++初学者,求优化方法

问题描述 UVa1374快速幂运算迭代深搜法 ,C++初学者,求优化方法 这是我的代码,优化过几次,但是还是很慢很慢,求大神给优化途经,就是在我的代码的进行优化 #include #include #include #include using namespace std; bool search(int,set&,int dep,int); int MAX=1; int tempMax; int main() { sets;int n; for(n=2;n!=1000;++n) { s.cle

PHP实现二维数组按某列进行排序的方法_php技巧

本文实例讲述了PHP实现二维数组按某列进行排序的方法.分享给大家供大家参考,具体如下: /* * 二维数组 按某列排序 * array_multisort($arr1,$arr2) * 手册 例子如下 * */ $data[] = array('volume' => 67, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 1); $data[] = array('volume' => 85, 'edi

PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)_php技巧

本文实例讲述了PHP查询并删除数据库多列重复数据的方法.分享给大家供大家参考,具体如下: <?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } $db_selected = mysql_select_db("test_db", $con); if (!$db

MySQL Index Condition Pushdown(ICP)性能优化方法实例

  这篇文章主要介绍了MySQL Index Condition Pushdown(ICP)性能优化方法实例,本文讲解了概念介绍.原理.实践案例.案例分析.ICP的使用限制等内容,需要的朋友可以参考下 一 概念介绍 Index Condition Pushdown (ICP)是MySQL 5.6 版本中的新特性,是一种在存储引擎层使用索引过滤数据的一种优化方式. a 当关闭ICP时,index 仅仅是data access 的一种访问方式,存储引擎通过索引回表获取的数据会传递到MySQL Ser

求海量数据的高性能查询统计的方法?

问题描述 求海量数据的高性能查询统计的方法? 目前有每天过亿的历史数据产生,这些数据要保存三个月,可以用什么技术或处理方案可以 实现对这些数据的快速查询统计等操作? 解决方案 这个属于大数据的处理,你需要借助一些专业大数据处理软件,比如hadoop,Storm等. 解决方案二: 用大数据平台,hadoop加spark吧,spark查询速度快,也能支持各种统计. 解决方案三: Hash法 Hash一般被翻译为哈希,也被称为散列,它是一种映射关系,即给定一个数据元素,其关键字为key,按一个确定的哈

MySQL Index Condition Pushdown(ICP)性能优化方法实例_Mysql

一 概念介绍 Index Condition Pushdown (ICP)是MySQL 5.6 版本中的新特性,是一种在存储引擎层使用索引过滤数据的一种优化方式. a 当关闭ICP时,index 仅仅是data access 的一种访问方式,存储引擎通过索引回表获取的数据会传递到MySQL Server 层进行where条件过滤. b 当打开ICP时,如果部分where条件能使用索引中的字段,MySQL Server 会把这部分下推到引擎层,可以利用index过滤的where条件在存储引擎层进行

总结SQL执行进展优化方法_MsSql

在本文中,小编将与大家重点探讨SQL执行进展优化的方法. 聚集索引扫描 SELECT * FROM C_SY_Ownedstorm 聚集索引扫描比表扫描快 聚集索引扫描:发生于聚集表,也相当于全表扫描操作,但在针对聚集列的条件等操作时,效率会较好. 表扫描 SELECT * FROM #temp 表扫描:发生于堆表,并且没有可用的索引时,会发生表扫描,表示整个表扫描一次. 测试SQL CREATE TABLE t1(c1 INT, c2 VARCHAR (8000)); GO DECLARE @

java中数组的定义及使用方法(推荐)_java

数组:是一组相关变量的集合 数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组.二维数组.多维数组 数据的有点 不使用数组定义100个整形变量:int i1;int i2;int i3 使用数组定义 int i[100]; 数组定义:int i[100];只是一个伪代码,只是表示含义的 一维数组 一维数组可以存放上千万个数据,并且这些数据的类型是完全相同的, 使用java数组,必须经过两个步骤,声明数组和分配内存给该数组, 声明形式一 声明一维数组:数据类型