>  기사  >  데이터 베이스  >  MySQL은 종종 우리에게 오해를 받습니다.

MySQL은 종종 우리에게 오해를 받습니다.

黄舟
黄舟원래의
2017-02-21 10:38:02941검색



MySQL은 데이터베이스의 주요 세력으로 우리의 다양한 시스템 어디에나 존재한다고 생각합니다. 그러나 사용할 수 있다는 것을 안다고 해서 세부 사항을 아는 것은 아닙니다. 따라서 우리가 일반적으로 별로 주의를 기울이지 않는 몇 가지 사항에 대해 먼저 재미로, 두 번째로 우리가 개입하지 않도록 살펴보겠습니다. 함정.

면책조항: 자세한 내용을 알고 싶으면 소스코드를 읽어보세요. 저는 그런 능력이 전혀 없어서 일방적인 관점에서만 이야기할 수 있습니다!

1. 대소문자 구분 없음(필드 이름)

MySQL 쿼리 필드 이름은 대소문자를 구분하지 않지만 쿼리 내용은 대소문자를 구분합니다. 밑줄을 사용하여 이름을 지정할 수 있는 경우 다음과 같이 이름을 지정할 때 대소문자 구분을 사용하지 마십시오. v_state FROM all_user WHERE username = 'sunyue';

SELECT uid,v_state FROM all_user WHERE USERNAME = 'sunyue'; //이전 명령문 결과와 동일하며 필드는 대소문자를 구분하지 않습니다. 민감함

  1. SELECT uid,v_state FROM all_user WHERE USERname = 'SUNYUE'


  2. 코드 복사

  3. 2. 퍼지 매칭([_]은 모든 문자와 일치)

퍼지하지만 일치는 약간 일반적인 의미를 가지므로 데이터베이스에서 일반 일치처럼 자유롭게 일치시킬 수는 없습니다. 가능한 한 일치를 단순화하도록 노력하십시오! (첨부 명사: 전체 텍스트 검색 스핑크스)

SELECT uid,v_state FROM all_user WHERE USERNAME LIKE 'su_yue' //밑줄 [_]은 임의의 단일과 일치합니다. 문자

SELECT uid,v_state FROM all_user WHERE USERNAME LIKE 'su%yue'; //%는 임의 개수의 문자와 일치합니다.

  1. SELECT uid ,v_state FROM all_user WHERE USERNAME NOT LIKE 'su%'; /t like 정보 가져오기가 포함되지 않음

  2. 코드 복사

  3. 3. 함수 추측 방법

mysql은 관계형 데이터베이스로서 일반 개발자를 대상으로 하므로 모든 것이 최대한 사용자 친화적이어야 합니다. 따라서 특정 기능이 무엇인지 모른다면 추측할 수 있을 것입니다. 왜냐하면 어떤 기능으로 인해 다른 사람이 추측할 수 없다면 실패한 디자인일 수도 있기 때문입니다. mysql의 경우 영어 수준만 조금이라도 좋으면 관계형 쿼리를 작성하는 방법을 쉽게 생각해 낼 수 있습니다. 그러므로 추측 능력은 당신의 영어 수준에 따라 달라집니다. 하하하! ! !

4. 구문으로 교체

replace into는 매우 조잡한 삽입 방법이지만 적절한 시나리오에서도 사용해야 합니다. 예를 들어 언제든지 덮어써야 하는 일부 데이터는 교체해야 하지만 일부 자동 증가 테이블의 경우 ID가 낭비되고 교체를 사용할 필요가 없으므로 사용하지 마세요.

5. 덤프 키 업데이트 구문에 삽입하세요.

이 쓰기 방법은 비교적 완만하지만 속도는 확실히 느리다고 합니다. mysql에만 이 기능이 있다고 해서 삽입하기 전에 데이터가 이미 존재하는지 확인하고 싶지 않다면 이 방법이 좋은 선택일 수도 있습니다!

6. 구문 설명

사실 저는 이 기능을 거의 사용하지 않지만 개발자가 자주 사용하는 경우에는 쿼리 효과를 확인하는 효과적인 방법입니다. , 그렇다면 나는 그 사람이 정말 대단한 사람임에 틀림없다고 믿는다. 이 명령을 통해 자신이 작성한 문장이 최적화되었는지, 그렇지 않은 경우에는 어떤 방향인지 판단할 수 있습니다. 더 많이 사용할수록 결과를 더 많이 알게 될 것이므로 더 많이 사용하십시오!

7. 인덱스 길이

myisam의 최대 인덱스 길이는 1000바이트이고, innodb의 최대 인덱스 길이는 767바이트입니다! 범위를 초과하면 기대치를 초과하므로 사용 시 주의하세요!

8. 라이브러리 복사

1) mysql과 함께 제공되는 데이터베이스 백업 및 복구 명령을 직접 데이터화합니다.

2) 파일을 직접 복사합니다. 대상 서버(프로세스 점유 문제에 주의하세요)

3) 동기화를 위한 도구를 사용하세요. 저는 개인적으로 두 번째 방법이 가장 쉽다고 생각합니다!

9. 파티셔닝

매우 큰 일부 테이블의 경우 파티셔닝 작업이 필요할 경우 하나 이상 추가해야 합니다. 그렇지 않으면 나중에 파티션을 작동할 수 없습니다. (적어도 나는 그렇게 생각한다)

10. 느린 쿼리

느린 쿼리, 이는 성능 모니터링 문제입니다. 서버 성능이 너무 좋지 않은 경우, 문제 해결 시 이러한 느린 쿼리 기록이 있으면 문제 해결이 더 효과적입니다!

11.binlog

binlog는 일반적으로 데이터 복구, 데이터 작업 기록 등에 꼭 필요한 기능입니다!

12. 꼭 알아야 할 기타 뷰, 저장 프로시저, 이벤트...

뷰, 이벤트 등 고급 애플리케이션이 많이 발견되었습니다. 프로젝트 이런 종류의 응용 프로그램은 전혀 존재하지 않으며, 적어도 내가 접한 프로젝트는 거의 전혀 관련되지 않거나 포함되어 있어도 다른 사람들이 아무렇게나 수행하는 것입니다! 하지만 유용하든 그렇지 않든 고급 기능을 이해해야 합니다!

심화해야 할 부분이 많습니다. 시간과 능력이 있다면 소스 코드를 살펴보는 것이 좋습니다! 위 내용은 우리가 흔히 오해하는 MySQL의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.