2012-09-03 3 views
5

데이터베이스의 일부 텍스트를 1000 자로 저장합니다. 그러나 처음 200 자만 표시합니다.어떤 mysql 메서드가 빠릅니까?

방법 1
내가 한 열 에 처음 200 개 문자를 저장하고 SQL 테이블

방법 2
나는 하나 개의 컬럼에 모든 것을 저장하고있는 동안의 두 번째 열에 남아 있었다 표시 할 수 있습니다 200 자에 대한 쿼리

+0

나는 방법 1 ** – Daya

+3

날 우리의 질문을 바꿔 보자 ** 생각한다''얘들 아, 누군가가 내 요구에 대한 데이터베이스에 대한 연구를 프로파일 링 할 수 있습니다) –

답변

4

"청소기" 1 열에 모든 것을 저장합니다. 당신에게 오직 당신은 정말 무관이

select substring(your_column, 1, 200) as your_column from your_table 
+1

그리고 무엇 생산성에 대해서? 간단한 select one 셀보다 DB'substring()'메소드를 호출하는 것이 초당 10 000 요청 내에서 더 빠릅니까? –

+0

'substring'은 꽤 빠른 함수입니다. 나는이 간단한 기능에 성능 문제가 있을지 의심 스럽다. 그러나 나는 그런 무거운 짐으로 그것을 시도하지 않았다. –

+0

Google 검색 결과를 고려해보십시오. 그래서 substring()을 사용할 수 있다고 생각합니다. – ZenOut

1

같은 첫 번째 200 개 문자를 선택할 수 있습니다,하지만 당신은 최적화하려고하면, 다음 방법 하나는 당신이 그 열을 쿼리 제한으로 더 나은 (또는 서버 측에서 substring을 수행하면 시간과 자원 (요청 횟수가 ...)이 발생하기 때문에 실제로 필요한 열을 쿼리하십시오. 방법 2 청소기,하지만 당신은이 두 가지 중 하나에 내려 올 것이다 방법 1.

0

있도록 시간을 최적화하고 있습니다 : 다음

당신이 PHP에 다시 전체 행을 당기는 경우 첫 번째 (200)를 보여주는 문자가 있다면 네트워크 속도가 잠재적으로 데이터를 가져 오는 데 병목이 될 수 있습니다.

반면에 두 개의 열이있는 경우 드라이브 액세스시 병목 현상이 발생하여 데이터를 PHP- 더 긴 행 으로 인해 여러 행에 더 느리게 액세스 할 수 있습니다.

이것은 서버 관련 계량으로 나타납니다. 실제로 서버가 어떻게 작동하는지에 달려 있습니다. 나는 당신의 코드가 얼마나 걸리는지보기 위해 각각 수십만 개의 코드를 되 찾으려는 시나리오를 제안 할 것이다.

0

방법 2

우선, 데이터의 중복 저장은 (사기 저하)은 일반적으로 나쁘다. 이 경우에는 분명히 사실입니다.

두 번째로 두 테이블에 쓰는 데 더 많은 시간이 걸립니다.

셋째로, 성가신 불일치에 대한 업데이트 및 삭제가 완료되었습니다 (1 번 참조).

넷째, 처음 200 자에서 텍스트를 검색하지 않는 한 두 가지 방법 모두에서 데이터를 가져 오는 것은 동일합니다 (처음 200 자의 하위 문자열 만 선택).

다섯째, 처음 200자를 검색하는 경우에도 색인을 생성 할 수 있으며 검색 속도는 동일해야합니다.

여섯째, UX를 제한하는 데이터베이스 디자인을 원하지 않습니다. 500 자로 변경해야한다면 어떻게해야할까요? 당신은해야 할 일이 많을 것입니다.

이것은 데이터베이스 디자인에서하지 말아야 할 매우 명백한 사례입니다.?

참조 : 조 Emison 응답으로 http://www.quora.com/MySQL/Which-mysql-method-is-fast

관련 문제