一个单引号引发的MYSQL性能问题分析
刚刚我们说过了,生活中难免会有一些不如意,比如,我们用一个字符串类型的字段来作为主键,表面上,这太不如意了,然而,事实也证明这是有用的。
对于大型的系统而言,Oracle,SQLServer无疑是最好的选择,可看看现在越来越多的小网站,他们没有自己的服务器,只是买别人的空间和数据库,但这种小型的数据库在性能上当然和大型数据库没有对比性,但小型的数据库也要对自己的优化方式,今天和大家分享Mysql中加没加单引号的巨大区别,对于MYSQL性能优化很有意义。刚刚我们说过了,生活中难免会有一些不如意,比如,我们用一个字符串类型的字段来作为主键,表面上,这太不如意了,然而,事实也证明这是有用的。问题也就出来了,当在查询语句中对该字段值加上单引号和不加查询耗时相差百倍!
测试表:
代码如下:
CREATE TABLE `foo` ( `key` varchar(10) NOT NULL, `time` int(11) NOT NULL, PRIMARY KEY (`key`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
然后插入30多万条数据,然后执行下面的SQL语句:
代码如下:
SELECT *FROM `foo`WHERE `key` =1293322797
查询花费 0.1288 秒,大约花费这么久的时间,然后,给1293322797加上单引号:
代码如下:
SELECT *FROM `foo`WHERE `key` ='1293322797'
查询花费 0.0009 秒,基本上相差100倍!!!也就是说不加单引号MYSQL性能损失了100倍,很震撼的比例!
后来用EXPLAIN分别跑了一下上面两条语句,见下面两张图:
没有单引号时
有单引号时
很明显,不使用单引号没有用上主索引,并进行了全表扫描,使用单引号就能使用上索引了。
后来我用大于分别进行了测试,返回的结果集相同,而他们的耗时和上面一样,用EXPLAIN测试,也和上面一样
代码如下:
SELECT *FROM `foo`WHERE `key` >1293322797SELECT *FROM `foo`WHERE `key` >'1293322797'
加单引号和不加单引号就是这么大的差别!就是会对mysql性能产生这么大的影响。
再后来,我将字段`key`换成INT类型,这时候,加不加单引号,就没有什么差别了,EXPLAIN显示他们都同样能够用上主索引,只是key_len变短了。
就是这些,综上所述,我们在写SQL查询的时候还是不厌其烦的加上单引号吧,似乎那没有坏处。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











SQLServer와 MySQL이 최상의 성능을 발휘할 수 있도록 성능을 최적화하는 방법은 무엇입니까? 개요: 오늘날의 데이터베이스 애플리케이션에서 SQLServer와 MySQL은 가장 일반적이고 널리 사용되는 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 데이터 양이 증가하고 비즈니스 요구 사항이 지속적으로 변화함에 따라 데이터베이스 성능 최적화가 특히 중요해졌습니다. 이 문서에서는 사용자가 SQLServer 및 MySQL의 성능을 최적화하는 데 도움이 되는 몇 가지 일반적인 방법과 기술을 소개합니다.

오늘은 어떤 설정이 수정되었는지 모르겠습니다. vim에서 프로그램을 작성할 때 작은따옴표나 큰따옴표를 모두 입력할 수 없다는 것을 발견했습니다. 큰따옴표의 효과는 ¨¨이며, 이로 인해 프로그램 오류가 발생합니다! 이 문제가 발생하는 이유는 키보드 레이아웃이 실제 상황과 일치하지 않아 수정이 필요하기 때문입니다. 입력할 수 없는 작은따옴표/큰따옴표에 대한 해결 방법: (참고: 바탕 화면이 영어인 경우 직접 번역하십시오.) 1. 시스템->관리 선택->키보드 선택을 클릭하고 American International을 American English로 변경합니다. 스타일! 2. 시스템-->기본 설정 선택-->키보드 선택을 클릭합니다. 설정이 아래 그림과 일치하는지 확인하십시오. 그런 다음 vim 도구를 다시 열면 문제가 해결됩니다!

MySQL 데이터베이스에서 인덱싱은 성능 최적화를 위한 매우 중요한 수단입니다. 테이블의 데이터 양이 증가하면 부적절한 인덱스로 인해 쿼리 속도가 느려지거나 데이터베이스 충돌이 발생할 수도 있습니다. 데이터베이스 성능을 향상시키기 위해서는 테이블 구조와 쿼리문을 설계할 때 인덱스를 합리적으로 사용해야 한다. 복합 인덱스는 여러 필드를 인덱스로 결합하여 쿼리 효율성을 향상시키는 고급 인덱싱 기술입니다. 이 기사에서는 복합 인덱스를 사용하여 MySQL 성능을 향상시키는 방법을 자세히 설명합니다. 복합지수 복합이란?

PHP에서 작은따옴표와 큰따옴표는 두 가지 일반적인 문자열 래핑 방법이며 사용 시 서로 다른 특성과 규칙을 갖습니다. 이 기사에서는 작은따옴표와 큰따옴표 각각의 사용 규칙을 분석하고 독자가 차이점을 더 잘 이해할 수 있도록 구체적인 코드 예제를 제공합니다. 1. 작은따옴표 사용 규칙: 작은따옴표 안의 내용은 그대로 출력되며, 변수나 이스케이프 문자는 구문 분석되지 않습니다. 즉, 작은 따옴표 안의 PHP는 문자열을 일반적인 문자 시퀀스로 인식하고 내용에 대해 아무 작업도 수행하지 않습니다. 작은따옴표 안에

MySQL에서 트랜잭션 격리 수준은 여러 트랜잭션이 동시에 실행될 때 데이터베이스가 데이터에 대한 동시 액세스를 처리하는 방법을 결정하는 매우 중요한 개념입니다. 실제 애플리케이션에서는 MySQL의 성능을 향상시키기 위해 특정 비즈니스 요구 사항에 따라 적절한 격리 수준을 선택해야 합니다. 먼저, MySQL의 4가지 트랜잭션 격리 수준인 READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ 및 SERIALIZA를 이해해야 합니다.

MySQL은 고성능, 확장성 및 오픈 소스 특성으로 인해 널리 사용되는 관계형 데이터베이스 관리 시스템으로 많은 기업과 개인이 가장 먼저 선택하는 시스템입니다. 그러나 데이터의 양이 계속 증가하고 데이터의 복잡성이 계속 증가함에 따라 MySQL의 성능 문제가 나타나기 시작했습니다. 중요한 성능 문제 중 하나는 쿼리 시간입니다. 쿼리 시간은 MySQL 쿼리에 걸리는 시간을 나타냅니다. 쿼리 시간이 짧을수록 MySQL의 성능이 향상되고 더 많은 쿼리 요청을 처리할 수 있는 능력이 향상됩니다. 이 문제를 해결하기 위해 쿼리 시간을 분석할 수 있습니다.

MySQL은 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 대용량 데이터를 처리할 때는 우수한 성능이 매우 중요합니다. MyISAM 인덱스 캐시는 MySQL의 매우 중요한 기능으로, 데이터 읽기 속도와 성능을 크게 향상시킬 수 있습니다. 이 기사에서는 MyISAM 인덱스 캐시가 작동하는 방식과 인덱스 캐시를 구성 및 최적화하여 MySQL 성능을 향상시키는 방법에 대해 자세히 살펴보겠습니다. MyISAM 인덱스 캐시란 무엇입니까? MyISAM은 MySQL의 스토리지 인덱스입니다.

데이터베이스 애플리케이션이 점점 더 복잡해짐에 따라 MySQL 성능 향상은 점점 더 중요한 작업 중 하나가 되었습니다. MySQL 성능 최적화에서 운영 체제 최적화는 무시할 수 없는 요소 중 하나입니다. 운영 체제를 최적화하면 MySQL이 하드웨어 리소스를 더 잘 활용하고 시스템 안정성과 성능을 향상시키는 데 도움이 될 수 있습니다. 이 기사에서는 운영 체제를 최적화하여 MySQL 성능을 향상시키는 방법을 살펴보겠습니다. 1. 커널 매개변수 조정 커널 매개변수 조정은 운영 체제 최적화의 기본 방법 중 하나입니다. 다음은 몇 가지 중요한 커널 매개변수 설정입니다. 메모리 조정
