mysql - 将 where 子句添加到 MySQL session

标签 mysql sql database

有没有办法添加类似 where 子句的内容作为 mysql session 的“全局”参数。

比如一个公司有多个用户,你想查询这个公司的用户,通常你会使用这样的语句:

SELECT * FROM users WHERE users.companyId = 2;

问题是添加 WHERE 子句意味着对代码产生巨大影响。不过,我们定义了这些关系,因此我认为(尽管我认为它不存在),您可以创建一个具有“全局”约束的 session ,该 session 中的所有查询都应遵守该约束。

最佳答案

您可以创建 View

CREATE VIEW view2 AS SELECT * FROM table1 WHERE companyid = 2;

如果缓慢是你的诅咒,那么你可以做一些事情:

  • where 字段(在本例中为 companyid)上放置索引。
  • 如果您需要更快的速度,您可以按 companyid 对表进行分区。
  • 将表设为内存表,并为=IN字段使用哈希索引。<
  • 使用 InnoDB,而不是 MyISAM。 InnoDB 具有更快的索引。
  • 不要使用 select *,明确选择您需要的字段。

参见:http://dev.mysql.com/doc/refman/5.0/en/create-view.html
http://dev.mysql.com/doc/refman/5.5/en/index-btree-hash.html
http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html
http://dev.mysql.com/doc/refman/5.1/en/partitioning.html

关于mysql - 将 where 子句添加到 MySQL session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403437/

相关文章:

c++ - 如何使用 C++ (ubuntu) 连接到 MySQL 数据库

mysql - 如何在 CentOS 6 中为 MariaDB Galera 集群配置多主复制

java - 简单 SQL 正则表达式的问题

sql - Oracle:在文本字段中使用 IN 子句?

python - 将文本文件中指定列中具有最大值的行输出到新文件

java - JDBC 的执行查询错误

python - 使用python在mysql中动态创建表

sql - 如何通过循环变量在 dbt 中多次运行 SQL 模型?

mysql - 当所有表都没有主键时,使用 'SET' 进行多列更新

mysql - 如何使 MySQL 中的一行与另一行相对应?