`
flysnowxf
  • 浏览: 577762 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

where 1=1是否造成性能影响?

阅读更多

讨论见http://www.iteye.com/topic/710338

帖子中说如果使用了where 1=1,则索引查询会失效。通过实验,该结论是错误的:

mysql> explain select * from pu_user_message where userid=1\G

*************************** 1. row ***************************

           id: 1

  select_type: SIMPLE

        table: pu_user_message

         type: ref

possible_keys: userid_index

          key: userid_index

      key_len: 5

          ref: const

         rows: 1

        Extra: Using where

1 row in set (0.00 sec)

mysql> explain select * from pu_user_message where 1=1 and userid=1\G

*************************** 1. row ***************************

           id: 1

  select_type: SIMPLE

        table: pu_user_message

         type: ref

possible_keys: userid_index

          key: userid_index

      key_len: 5

          ref: const

         rows: 1

        Extra: Using where

1 row in set (0.00 sec)

两次执行完全一样,均使用了索引。

分享到:
评论
2 楼 f6583096 2013-09-26  
1 楼 rabbitbug 2011-10-06  
不知mysql情况
但如果是Oracle里
试试稍复杂的SQL看看
在11g以下


http://yangtingkun.itpub.net/post/468/248790

相关推荐

    学生管理系统

    可以使用PreparedStatement预编译SQL语句提高性能,避免字符串拼接造成的SQL解析开销。另外,批量操作(batch update)可以减少网络往返次数,提高效率。 8. **安全性** 避免在代码中硬编码数据库凭据,使用配置...

    SQL性能优化

    1 性能优化 1.1 避免频繁 commit,尤其是把 commit 写在循环体中每次循环都进行commit。 1.2 使用绑定变量,避免常量的直接引用。 示例:以下书写不符合本规范。 INSERT INTO sm_users (user_id, user_name, ...

    SQL Server数据库性能优化之SQL语句篇

    - **问题说明**:在WHERE子句中使用函数会导致索引失效,从而触发全表扫描,严重影响查询性能。 - **示例**: - 不推荐写法: ```sql SELECT * FROM users WHERE YEAR(dteCreated) ``` - 推荐写法: ```sql ...

    监控Oracle运行的一些SQL

    这两种查询方式可以帮助我们快速获取正在执行的SQL语句信息,并且可以根据会话的状态(如是否为活动状态)进行筛选,从而更加准确地了解当前数据库的工作状态。 ##### 查找正在执行的SQL语句 如果需要更精确地找到...

    sql server2008性能参数获取语句

    IF EXISTS (SELECT 1 FROM #temp_who_lock a WHERE id > @index AND EXISTS (SELECT 1 FROM #temp_who_lock WHERE id <= @index AND a.blk = spid)) BEGIN SET @lock = 1; SELECT @spid = spid, @blk = blk FROM ...

    如何实现上一条、下一条的功能

    1. **性能考虑**:当数据量较大时,频繁地执行子查询可能会对性能造成一定影响。可以考虑使用索引、存储过程等方式进行优化。 2. **异常处理**:在实际应用中需要考虑各种异常情况,比如当查询结果为空时应如何处理...

    影响SQL Server性能的三个关键点

    - **增加表连接的复杂性**:虽然标准化设计有助于提高性能,但它也可能增加数据检索时表连接的数量和复杂度,这可能会对服务器性能造成负面影响。 - **主键和外键的设计**:在设计主键和外键时,确保它们的数据类型...

    SQL语句技巧使用大全

    同时,在使用字符串匹配时,如`SELECT * FROM RECORD WHERE SUBSTRING(CARD_NO, 1, 4) = '5378'`,建议改为`SELECT * FROM RECORD WHERE CARD_NO LIKE '5378%'`,利用索引提高查询速度。 #### 4. 逻辑运算符的正确...

    SQLserver性能检测和优化.docx

    SQL Server性能检测和优化是数据库管理系统中至关重要的环节,尤其当面临系统性能低下时,有效诊断和提升系统效能显得尤为关键。SQL Server Profiler作为一款内置的性能分析工具,能够帮助我们实时监控数据库和...

    MySQL面试题精选35题

    这意味着,对于 `index(a,b,c)`,查询 `WHERE a=1` 或 `WHERE a=1 AND b=2` 都会使用索引,但 `WHERE b=1` 或 `WHERE c=1` 不会。 以上是针对 MySQL 面试题所涵盖的一些核心知识点,这些内容对于理解 MySQL 的工作...

    从字符串中查找字符出现次数的方法和性能对比

    然而,它的性能受到字符串长度的影响,时间复杂度为O(n),其中n为字符串长度。 ### 方法二:使用`String.Replace`方法 第二种方法利用了`String.Replace`函数的特性。此方法通过计算替换前后的字符串长度差来间接...

    oracle系统性能监控 及 top10问题.txt

    4. **锁争用频繁**:造成并发性能下降。 5. **缓存命中率低**:增加磁盘I/O负担。 6. **内存分配不合理**:导致频繁交换至磁盘。 7. **数据库配置参数不合适**:如PGA、SGA等设置不合理。 8. **备份恢复策略不完善**...

    SQL审核与开发规范

    String query = "select column_name from table_name where id=?"; pstmt = connection.prepareStatement(query); pstmt.setInt(1, 100); rs = pstmt.executeQuery(); ``` **批量绑定** - 在需要执行大量...

    优化SQL全方案

    SELECT a.col1 FROM a WHERE EXISTS(SELECT 1 FROM b WHERE a.col2 = b.col1 AND b.col2 = 100); ``` 相比于: ``` SELECT a.col1 FROM a WHERE a.col2 IN (SELECT b.col1 FROM b WHERE b.col2 = 100); ``` 这种...

    oracle动态性能表

    oracle动态性能表 学习动态性能表 第一篇--v$sysstat 2007.5.23  按照OracleDocument中的描述,v$sysstat存储自数据库实例运行那刻起就开始累计全实例(instance-wide)的资源使用情况。 类似于v$sesstat,该视图...

    SQL语句性能调整原则

    `ORDER BY`子句用于对查询结果进行排序,但其使用不当也会造成性能瓶颈。如果排序依据的列没有建立合适的索引,或者排序条件过于复杂,那么数据库可能需要额外的时间和资源来完成排序过程。为提高排序效率,应确保...

    maximo删除应用sql

    3. **验证结果**:确保所有相关数据都被正确删除,并且不会对其他应用程序造成影响。 #### 四、具体SQL命令示例 下面是一组SQL命令示例,用于删除名为“Test”的应用程序及其相关数据。请注意,在实际操作前,请...

Global site tag (gtag.js) - Google Analytics