有没有办法添加类似 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/